MCPcopy Create free account
hub / github.com/IBAMR/IBAMR / main

Function main

ibtk/examples/SCPoisson/example.cpp:45–257  ·  view source on GitHub ↗

* For each run, the input filename must be given on the command line. In all * * cases, the command line is: * * * * executable * *

Source from the content-addressed store, hash-verified

43 * *
44 *******************************************************************************/
45int
46main(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

Callers

nothing calls this directly

Calls 15

getInputDatabaseMethod · 0.80
getComponentDatabaseMethod · 0.80
getPatchLevelMethod · 0.80
allocatePatchDataMethod · 0.80
maxNormMethod · 0.80
L2NormMethod · 0.80
L1NormMethod · 0.80
getVisItDataWriterMethod · 0.45
getFinestLevelNumberMethod · 0.45

Tested by

no test coverage detected