23 Box domain = geom.Domain();
24 khi_lsm = domain.smallEnd(2) - 1;
43 BoxArray ba = cons_in.boxArray();
44 DistributionMapping dm = cons_in.DistributionMap();
45 BoxList bl_lsm = ba.boxList();
46 for (
auto& b : bl_lsm) {
50 BoxArray ba_lsm(std::move(bl_lsm));
53 const RealBox& dom_rb =
m_geom.ProbDomain();
54 const Real* dom_dx =
m_geom.CellSize();
55 RealBox lsm_rb = dom_rb;
56 Real lsm_dx[AMREX_SPACEDIM] = {AMREX_D_DECL(dom_dx[0],dom_dx[1],
m_dz_lsm)};
57 Real lsm_z_hi = dom_rb.lo(2);
58 Real lsm_z_lo = lsm_z_hi - Real(
m_nz_lsm)*lsm_dx[2];
59 lsm_rb.setHi(2,lsm_z_hi); lsm_rb.setLo(2,lsm_z_lo);
66 lsm_fab_vars[ivar] = std::make_shared<MultiFab>(ba_lsm, dm, 1, ng);
70 lsm_fab_flux[ivar] = std::make_shared<MultiFab>(convert(ba_lsm, IntVect(0,0,1)), dm, 1, IntVect(0,0,0));
77 amrex::Print() <<
"Noah-MP initialization started" << std::endl;
85 for (amrex::MFIter mfi(cons_in,
false); mfi.isValid(); ++mfi, ++idb) {
88 const amrex::Box& bx = mfi.tilebox();
91 if (bx.smallEnd(2) == domain.smallEnd(2)) {
97 noahmpio->blkid = idb;
100 noahmpio->ScalarInitDefault();
103 noahmpio->rank = amrex::ParallelDescriptor::MyProc();
108 noahmpio->ReadNamelist();
112 noahmpio->ReadLandHeader();
119 noahmpio->xstart = bx.smallEnd(0);
120 noahmpio->xend = bx.bigEnd(0);
121 noahmpio->ystart = bx.smallEnd(1);
122 noahmpio->yend = bx.bigEnd(1);
125 noahmpio->ids = noahmpio->xstart;
126 noahmpio->ide = noahmpio->xend;
127 noahmpio->jds = noahmpio->ystart;
128 noahmpio->jde = noahmpio->yend;
133 noahmpio->its = noahmpio->xstart;
134 noahmpio->ite = noahmpio->xend;
135 noahmpio->jts = noahmpio->ystart;
136 noahmpio->jte = noahmpio->yend;
141 noahmpio->ims = noahmpio->xstart;
142 noahmpio->ime = noahmpio->xend;
143 noahmpio->jms = noahmpio->ystart;
144 noahmpio->jme = noahmpio->yend;
151 noahmpio->VarInitDefault();
155 noahmpio->ReadTable();
158 noahmpio->ReadLandMain();
162 noahmpio->InitMain();
166 amrex::Print() <<
"Noah-MP initialization completed" << std::endl;
int m_lsm_size
Definition: ERF_NOAH.H:104
amrex::Vector< std::string > LsmVarName
Definition: ERF_NOAH.H:110
amrex::Array< FabPtr, LsmVar_NOAH::NumVars > lsm_fab_flux
Definition: ERF_NOAH.H:134
amrex::Vector< int > LsmVarMap
Definition: ERF_NOAH.H:107
amrex::Real m_dz_lsm
Definition: ERF_NOAH.H:142
int m_nz_lsm
Definition: ERF_NOAH.H:139
amrex::Real m_theta_dir
Definition: ERF_NOAH.H:151
amrex::Array< FabPtr, LsmVar_NOAH::NumVars > lsm_fab_vars
Definition: ERF_NOAH.H:131
int khi_lsm
Definition: ERF_NOAH.H:122
amrex::Geometry m_lsm_geom
Definition: ERF_NOAH.H:116
amrex::Real m_dt
Definition: ERF_NOAH.H:119
@ NumVars
Definition: ERF_NOAH.H:26
@ theta
Definition: ERF_NOAH.H:25