* For each run, the input filename must be given on the command line. In all * * cases, the command line is: * * * * executable * *
| 59 | * * |
| 60 | *******************************************************************************/ |
| 61 | int |
| 62 | main(int argc, char* argv[]) |
| 63 | { |
| 64 | // Initialize IBAMR and libraries. Deinitialization is handled by this object as well. |
| 65 | IBTKInit ibtk_init(argc, argv, MPI_COMM_WORLD); |
| 66 | |
| 67 | { // cleanup dynamically allocated objects prior to shutdown |
| 68 | |
| 69 | // Parse command line options, set some standard options from the input |
| 70 | // file, and enable file logging. |
| 71 | Pointer<AppInitializer> app_initializer = new AppInitializer(argc, argv, "sc_poisson.log"); |
| 72 | Pointer<Database> input_db = app_initializer->getInputDatabase(); |
| 73 | |
| 74 | // Create major algorithm and data objects that comprise the |
| 75 | // application. These objects are configured from the input database. |
| 76 | Pointer<CartesianGridGeometry<NDIM>> grid_geometry = new CartesianGridGeometry<NDIM>( |
| 77 | "CartesianGeometry", app_initializer->getComponentDatabase("CartesianGeometry")); |
| 78 | Pointer<PatchHierarchy<NDIM>> patch_hierarchy = new PatchHierarchy<NDIM>("PatchHierarchy", grid_geometry); |
| 79 | Pointer<StandardTagAndInitialize<NDIM>> error_detector = new StandardTagAndInitialize<NDIM>( |
| 80 | "StandardTagAndInitialize", nullptr, app_initializer->getComponentDatabase("StandardTagAndInitialize")); |
| 81 | Pointer<BergerRigoutsos<NDIM>> box_generator = new BergerRigoutsos<NDIM>(); |
| 82 | Pointer<LoadBalancer<NDIM>> load_balancer = |
| 83 | new LoadBalancer<NDIM>("LoadBalancer", app_initializer->getComponentDatabase("LoadBalancer")); |
| 84 | Pointer<GriddingAlgorithm<NDIM>> gridding_algorithm = |
| 85 | new GriddingAlgorithm<NDIM>("GriddingAlgorithm", |
| 86 | app_initializer->getComponentDatabase("GriddingAlgorithm"), |
| 87 | error_detector, |
| 88 | box_generator, |
| 89 | load_balancer); |
| 90 | |
| 91 | // Create variables and register them with the variable database. |
| 92 | VariableDatabase<NDIM>* var_db = VariableDatabase<NDIM>::getDatabase(); |
| 93 | Pointer<VariableContext> ctx = var_db->getContext("context"); |
| 94 | |
| 95 | Pointer<SideVariable<NDIM, double>> u_sc_var = new SideVariable<NDIM, double>("u_sc"); |
| 96 | Pointer<SideVariable<NDIM, double>> f_sc_var = new SideVariable<NDIM, double>("f_sc"); |
| 97 | Pointer<SideVariable<NDIM, double>> e_sc_var = new SideVariable<NDIM, double>("e_sc"); |
| 98 | Pointer<SideVariable<NDIM, double>> r_sc_var = new SideVariable<NDIM, double>("r_sc"); |
| 99 | #if (NDIM == 2) |
| 100 | Pointer<NodeVariable<NDIM, double>> mu_nc_var = new NodeVariable<NDIM, double>("mu_node"); |
| 101 | const int mu_nc_idx = var_db->registerVariableAndContext(mu_nc_var, ctx, IntVector<NDIM>(1)); |
| 102 | #elif (NDIM == 3) |
| 103 | Pointer<EdgeVariable<NDIM, double>> mu_ec_var = new EdgeVariable<NDIM, double>("mu_edge"); |
| 104 | const int mu_ec_idx = var_db->registerVariableAndContext(mu_ec_var, ctx, IntVector<NDIM>(1)); |
| 105 | Pointer<CellVariable<NDIM, double>> mu_cc_var = new CellVariable<NDIM, double>("mu_cc"); |
| 106 | const int mu_cc_idx = var_db->registerVariableAndContext(mu_cc_var, ctx, IntVector<NDIM>(0)); |
| 107 | #endif |
| 108 | |
| 109 | const int u_sc_idx = var_db->registerVariableAndContext(u_sc_var, ctx, IntVector<NDIM>(1)); |
| 110 | const int f_sc_idx = var_db->registerVariableAndContext(f_sc_var, ctx, IntVector<NDIM>(1)); |
| 111 | const int e_sc_idx = var_db->registerVariableAndContext(e_sc_var, ctx, IntVector<NDIM>(1)); |
| 112 | const int r_sc_idx = var_db->registerVariableAndContext(r_sc_var, ctx, IntVector<NDIM>(1)); |
| 113 | |
| 114 | Pointer<CellVariable<NDIM, double>> u_cc_var = new CellVariable<NDIM, double>("u_cc", NDIM); |
| 115 | Pointer<CellVariable<NDIM, double>> f_cc_var = new CellVariable<NDIM, double>("f_cc", NDIM); |
| 116 | Pointer<CellVariable<NDIM, double>> e_cc_var = new CellVariable<NDIM, double>("e_cc", NDIM); |
| 117 | Pointer<CellVariable<NDIM, double>> r_cc_var = new CellVariable<NDIM, double>("r_cc", NDIM); |
| 118 |
nothing calls this directly
no test coverage detected