MCPcopy Create free account
hub / github.com/AMReX-Codes/amrex / testParticleMesh

Function testParticleMesh

Tests/Particles/ParticleMeshMultiLevel/main.cpp:27–168  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

25};
26
27void testParticleMesh (TestParams& parms)
28{
29 Vector<IntVect> rr(parms.nlevs-1);
30 for (int lev = 1; lev < parms.nlevs; lev++) {
31 rr[lev-1] = IntVect(AMREX_D_DECL(2,2,2));
32 }
33
34 RealBox real_box;
35 for (int n = 0; n < BL_SPACEDIM; n++) {
36 real_box.setLo(n, 0.0);
37 real_box.setHi(n, 1.0);
38 }
39
40 IntVect domain_lo(AMREX_D_DECL(0, 0, 0));
41 IntVect domain_hi(AMREX_D_DECL(parms.nx - 1, parms.ny - 1, parms.nz-1));
42 const Box base_domain(domain_lo, domain_hi);
43
44 // This sets the boundary conditions to be doubly or triply periodic
45 int is_per[] = {AMREX_D_DECL(1,1,1)};
46
47 Vector<Geometry> geom(parms.nlevs);
48 geom[0].define(base_domain, &real_box, CoordSys::cartesian, is_per);
49 for (int lev = 1; lev < parms.nlevs; lev++) {
50 geom[lev].define(amrex::refine(geom[lev-1].Domain(), rr[lev-1]),
51 &real_box, CoordSys::cartesian, is_per);
52 }
53
54 Vector<BoxArray> ba(parms.nlevs);
55 Vector<DistributionMapping> dm(parms.nlevs);
56
57 Box domain = base_domain;
58 IntVect size(AMREX_D_DECL(parms.nx, parms.ny, parms.nz));
59 for (int lev = 0; lev < parms.nlevs; ++lev)
60 {
61 ba[lev].define(domain);
62 ba[lev].maxSize(parms.max_grid_size);
63 dm[lev].define(ba[lev]);
64 domain.grow(-size/4); // fine level cover the middle of the coarse domain
65 domain.refine(2);
66 }
67
68 Vector<MultiFab> const_mf(parms.nlevs);
69 Vector<MultiFab> density1(parms.nlevs);
70 Vector<MultiFab> density2(parms.nlevs);
71 for (int lev = 0; lev < parms.nlevs; lev++) {
72 const_mf[lev].define(ba[lev], dm[lev], 1, 1);
73 const_mf[lev].setVal(-2.0e8);
74 density1[lev].define(ba[lev], dm[lev], 1, 1);
75 density1[lev].setVal(-2.0e8);
76 density2[lev].define(ba[lev], dm[lev], 1, 1);
77 density2[lev].setVal(0.0);
78 }
79
80 MyParticleContainer myPC(geom, dm, ba, rr);
81 myPC.SetVerbose(false);
82
83 int num_particles = parms.nppc * parms.nx * parms.ny * parms.nz;
84 amrex::Print() << "Total number of particles : " << num_particles << '\n' << '\n';

Callers 1

mainFunction · 0.70

Calls 15

PrintClass · 0.85
GetVecOfPtrsFunction · 0.85
SubtractFunction · 0.85
WriteMultiLevelPlotfileFunction · 0.85
refineMethod · 0.80
refineFunction · 0.50
ParticleToMeshFunction · 0.50
setLoMethod · 0.45
setHiMethod · 0.45
defineMethod · 0.45
DomainMethod · 0.45
setValMethod · 0.45

Tested by

no test coverage detected