/* *************************************************************** */ int test_matrix_assemble_3d(void) { N_geom_data *geom; N_les *les; N_les_callback_3d *call; N_array_3d *status; N_array_3d *start_val; /*set the callback to default */ call = N_alloc_les_callback_3d(); status = create_status_array_3d(); start_val = create_value_array_3d(); geom = N_alloc_geom_data(); geom->dx = 1; geom->dy = 1; geom->dz = 1; geom->Az = 1; geom->depths = TEST_N_NUM_DEPTHS; geom->rows = TEST_N_NUM_ROWS; geom->cols = TEST_N_NUM_COLS; /*Assemble the matrix */ les = N_assemble_les_3d(N_SPARSE_LES, geom, status, start_val, NULL, call); N_free_les(les); les = N_assemble_les_3d_active(N_SPARSE_LES, geom, status, start_val, NULL, call); N_free_les(les); les = N_assemble_les_3d_dirichlet(N_SPARSE_LES, geom, status, start_val, NULL, call); N_les_integrate_dirichlet_3d(les, geom, status, start_val); N_free_les(les); les = N_assemble_les_3d(N_NORMAL_LES, geom, status, start_val, NULL, call); N_free_les(les); les = N_assemble_les_3d_active(N_NORMAL_LES, geom, status, start_val, NULL, call); N_free_les(les); les = N_assemble_les_3d_dirichlet(N_NORMAL_LES, geom, status, start_val, NULL, call); N_les_integrate_dirichlet_3d(les, geom, status, start_val); N_free_les(les); G_free(geom); G_free(call); return 0; }
/* *************************************************************** */ int test_solute_transport_3d(void) { N_solute_transport_data3d *data; N_geom_data *geom; N_les *les; N_les_callback_3d *call; call = N_alloc_les_callback_3d(); N_set_les_callback_3d_func(call, (*N_callback_solute_transport_3d)); /*solute_transport 3d */ data = create_solute_transport_data_3d(); N_calc_solute_transport_disptensor_3d(data); data->dt = 86400; geom = N_alloc_geom_data(); geom->dx = 10; geom->dy = 15; geom->dz = 3; geom->Az = 150; geom->depths = TEST_N_NUM_DEPTHS_LOCAL; geom->rows = TEST_N_NUM_ROWS_LOCAL; geom->cols = TEST_N_NUM_COLS_LOCAL; /*Assemble the matrix */ /* */ /*Jacobi */ les = N_assemble_les_3d(N_SPARSE_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_jacobi(les, 100, 1, 0.1e-8); N_print_les(les); N_free_les(les); /*jacobi */ les = N_assemble_les_3d(N_NORMAL_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_jacobi(les, 100, 1, 0.1e-8); N_print_les(les); N_free_les(les); /*SOR*/ les = N_assemble_les_3d(N_SPARSE_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_SOR(les, 100, 1, 0.1e-8); N_print_les(les); N_free_les(les); /*SOR*/ les = N_assemble_les_3d(N_NORMAL_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_SOR(les, 100, 1, 0.1e-8); N_print_les(les); N_free_les(les); /*BICG*/ les = N_assemble_les_3d(N_SPARSE_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_bicgstab(les, 100, 0.1e-8); N_print_les(les); N_free_les(les); /*BICG*/ les = N_assemble_les_3d(N_NORMAL_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_bicgstab(les, 100, 0.1e-8); N_print_les(les); N_free_les(les); /*GUASS*/ les = N_assemble_les_3d(N_NORMAL_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_gauss(les); N_print_les(les); N_free_les(les); /*LU*/ les = N_assemble_les_3d(N_NORMAL_LES, geom, data->status, data->c_start, (void *)data, call); N_solver_lu(les); N_print_les(les); N_free_les(les); N_free_solute_transport_data3d(data); G_free(geom); G_free(call); return 0; }