* For each run, the input filename must be given on the command line. In all * * cases, the command line is: * * * * executable * *
| 43 | * * |
| 44 | *******************************************************************************/ |
| 45 | int |
| 46 | main(int argc, char* argv[]) |
| 47 | { |
| 48 | // Initialize IBAMR and libraries. Deinitialization is handled by this object as well. |
| 49 | IBTKInit ibtk_init(argc, argv, MPI_COMM_WORLD); |
| 50 | |
| 51 | { // cleanup dynamically allocated objects prior to shutdown |
| 52 | |
| 53 | // Parse command line options, set some standard options from the input |
| 54 | // file, and enable file logging. |
| 55 | Pointer<AppInitializer> app_initializer = new AppInitializer(argc, argv, "sc_poisson.log"); |
| 56 | Pointer<Database> input_db = app_initializer->getInputDatabase(); |
| 57 | |
| 58 | // Create major algorithm and data objects that comprise the |
| 59 | // application. These objects are configured from the input database. |
| 60 | Pointer<CartesianGridGeometry<NDIM>> grid_geometry = new CartesianGridGeometry<NDIM>( |
| 61 | "CartesianGeometry", app_initializer->getComponentDatabase("CartesianGeometry")); |
| 62 | Pointer<PatchHierarchy<NDIM>> patch_hierarchy = new PatchHierarchy<NDIM>("PatchHierarchy", grid_geometry); |
| 63 | Pointer<StandardTagAndInitialize<NDIM>> error_detector = new StandardTagAndInitialize<NDIM>( |
| 64 | "StandardTagAndInitialize", nullptr, app_initializer->getComponentDatabase("StandardTagAndInitialize")); |
| 65 | Pointer<BergerRigoutsos<NDIM>> box_generator = new BergerRigoutsos<NDIM>(); |
| 66 | Pointer<LoadBalancer<NDIM>> load_balancer = |
| 67 | new LoadBalancer<NDIM>("LoadBalancer", app_initializer->getComponentDatabase("LoadBalancer")); |
| 68 | Pointer<GriddingAlgorithm<NDIM>> gridding_algorithm = |
| 69 | new GriddingAlgorithm<NDIM>("GriddingAlgorithm", |
| 70 | app_initializer->getComponentDatabase("GriddingAlgorithm"), |
| 71 | error_detector, |
| 72 | box_generator, |
| 73 | load_balancer); |
| 74 | |
| 75 | // Create variables and register them with the variable database. |
| 76 | VariableDatabase<NDIM>* var_db = VariableDatabase<NDIM>::getDatabase(); |
| 77 | Pointer<VariableContext> ctx = var_db->getContext("context"); |
| 78 | |
| 79 | Pointer<SideVariable<NDIM, double>> u_sc_var = new SideVariable<NDIM, double>("u_sc"); |
| 80 | Pointer<SideVariable<NDIM, double>> f_sc_var = new SideVariable<NDIM, double>("f_sc"); |
| 81 | Pointer<SideVariable<NDIM, double>> e_sc_var = new SideVariable<NDIM, double>("e_sc"); |
| 82 | Pointer<SideVariable<NDIM, double>> r_sc_var = new SideVariable<NDIM, double>("r_sc"); |
| 83 | |
| 84 | const int u_sc_idx = var_db->registerVariableAndContext(u_sc_var, ctx, IntVector<NDIM>(1)); |
| 85 | const int f_sc_idx = var_db->registerVariableAndContext(f_sc_var, ctx, IntVector<NDIM>(1)); |
| 86 | const int e_sc_idx = var_db->registerVariableAndContext(e_sc_var, ctx, IntVector<NDIM>(1)); |
| 87 | const int r_sc_idx = var_db->registerVariableAndContext(r_sc_var, ctx, IntVector<NDIM>(1)); |
| 88 | |
| 89 | Pointer<CellVariable<NDIM, double>> u_cc_var = new CellVariable<NDIM, double>("u_cc", NDIM); |
| 90 | Pointer<CellVariable<NDIM, double>> f_cc_var = new CellVariable<NDIM, double>("f_cc", NDIM); |
| 91 | Pointer<CellVariable<NDIM, double>> e_cc_var = new CellVariable<NDIM, double>("e_cc", NDIM); |
| 92 | Pointer<CellVariable<NDIM, double>> r_cc_var = new CellVariable<NDIM, double>("r_cc", NDIM); |
| 93 | |
| 94 | const int u_cc_idx = var_db->registerVariableAndContext(u_cc_var, ctx, IntVector<NDIM>(0)); |
| 95 | const int f_cc_idx = var_db->registerVariableAndContext(f_cc_var, ctx, IntVector<NDIM>(0)); |
| 96 | const int e_cc_idx = var_db->registerVariableAndContext(e_cc_var, ctx, IntVector<NDIM>(0)); |
| 97 | const int r_cc_idx = var_db->registerVariableAndContext(r_cc_var, ctx, IntVector<NDIM>(0)); |
| 98 | |
| 99 | // Register variables for plotting. |
| 100 | Pointer<VisItDataWriter<NDIM>> visit_data_writer = app_initializer->getVisItDataWriter(); |
| 101 | TBOX_ASSERT(visit_data_writer); |
| 102 |
nothing calls this directly
no test coverage detected