REMORA
Regional Modeling of Oceans Refined Adaptively
Loading...
Searching...
No Matches
REMORA_InitAnalyticProb_DoubleGyre.H
Go to the documentation of this file.
1
2 bool l_use_salt = m_solverChoice.use_salt;
3
4 auto geomdata = geom.data();
5 const int khi = geomdata.Domain().bigEnd()[2];
6
7 auto T0 = m_solverChoice.T0;
8 Real val1 = (44.69_rt / 39.382_rt) * (44.69_rt / 39.382_rt);
9 Real val2 = val1 * (m_solverChoice.rho0 * 100.0_rt/g) * (5.0e-5_rt/((42.689_rt/44.69_rt) * (42.689_rt/44.69_rt)));
10
11 for (MFIter mfi(mf_cons, TilingIfNotGPU()); mfi.isValid(); ++mfi)
12 {
13 const Box &bx = mfi.tilebox();
14 AMREX_ALWAYS_ASSERT(bx.length()[2] == khi+1);
15
16 Array4< Real> const& state = mf_cons.array(mfi);
17 Array4< Real> const& x_vel = mf_xvel.array(mfi);
18 Array4< Real> const& y_vel = mf_yvel.array(mfi);
19
20 Array4<const Real> const& z_r = remora.vec_z_r[lev]->const_array(mfi);
21
22 ParallelFor(bx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept
23 {
24 const auto prob_lo = geomdata.ProbLo();
25 const auto prob_hi = geomdata.ProbHi();
26 const auto dx = geomdata.CellSize();
27
28 const Real y = prob_lo[1] + (j + 0.5_rt) * dx[1];
29 const Real z = z_r(i,j,k);
30 const Real yextent = prob_hi[1] - prob_lo[1];
31
32 const Real val3 = T0 + val2 * std::exp(z/100.0_rt) * (10.0_rt - 0.4_rt * std::tanh(z / 100.0_rt));
33 const Real val4 = y / yextent;
34
35 state(i,j,k,Temp_comp)=val3 - 3.0_rt * val4;
36 if (l_use_salt) {
37 state(i,j,k,Salt_comp)=34.5_rt - 0.001_rt * z - val4;
38 }
39
40 // Set scalar = 0 everywhere
41 state(i, j, k, Tracer_comp) = 0.0_rt;
42 });
43
44 const Box& xbx = surroundingNodes(bx,0);
45 const Box& ybx = surroundingNodes(bx,1);
46 ParallelFor(xbx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept
47 {
48 x_vel(i,j,k) = 0.0_rt;
49 });
50 ParallelFor(ybx, [=] AMREX_GPU_DEVICE(int i, int j, int k) noexcept
51 {
52 y_vel(i, j, k) = 0.0_rt;
53 });
54 }
55 Gpu::streamSynchronize();
constexpr amrex::Real g
#define Temp_comp
#define Tracer_comp
#define Salt_comp
AMREX_ALWAYS_ASSERT(!NSPeriodic||!EWPeriodic)