4 #ifndef ERF_LATLONMAP_H_
5 #define ERF_LATLONMAP_H_
7 #include <AMReX_Array.H>
8 #include <AMReX_Array4.H>
10 #include <AMReX_BoxArray.H>
11 #include <AMReX_DistributionMapping.H>
12 #include <AMReX_Geometry.H>
13 #include <AMReX_MultiFab.H>
14 #include <AMReX_REAL.H>
57 const amrex::Real scale = std::max(std::max(std::abs(dlat_di), std::abs(dlon_di)),
58 std::max(std::abs(dlat_dj), std::abs(dlon_dj)));
59 const amrex::Real det = dlat_di*dlon_dj - dlat_dj*dlon_di;
62 if (scale <=
amrex::Real(0.0) || std::abs(det) <= rel*scale*scale) {
65 di = ( dlat*dlon_dj - dlon*dlat_dj) / det;
66 dj = (-dlat*dlon_di + dlon*dlat_di) / det;
117 const amrex::Box& dom,
int i,
int j,
126 const amrex::Box& dom,
127 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
problo,
128 const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>&
dx,
134 void pack_latlon (amrex::MultiFab& latlon,
const amrex::MultiFab& lat,
const amrex::MultiFab& lon);
146 LatLonMap (
const amrex::MultiFab& lat,
const amrex::MultiFab& lon,
147 const amrex::BoxArray& ba2d,
const amrex::DistributionMapping& dm,
148 const amrex::Geometry& geom0);
160 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
m_problo;
161 amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>
m_dx;
auto problo
Definition: ERF_InitCustomPertVels_ABL.H:36
const Real dx
Definition: ERF_InitCustomPert_ABL.H:44
LatLonStatus
Definition: ERF_LatLonMap.H:105
LatLonStatus locate_latlon_on_grid(const amrex::Array4< const amrex::Real > &ll, const amrex::Box &dom, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &problo, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dx, amrex::Real req_lat, amrex::Real req_lon, LatLonLocation &loc)
amrex::Real wrap_longitude_difference(amrex::Real dlon)
Definition: ERF_LatLonMap.H:75
bool invert_latlon_offset(amrex::Real dlat, amrex::Real dlon, amrex::Real dlat_di, amrex::Real dlon_di, amrex::Real dlat_dj, amrex::Real dlon_dj, amrex::Real &di, amrex::Real &dj)
Definition: ERF_LatLonMap.H:52
void pack_latlon(amrex::MultiFab &latlon, const amrex::MultiFab &lat, const amrex::MultiFab &lon)
void grid_rotation_from_latlon(const amrex::Array4< const amrex::Real > &ll, const amrex::Box &dom, int i, int j, amrex::Real &cos_alpha, amrex::Real &sin_alpha)
Real sin_alpha
Definition: ERF_Plotfile2DInterpolator.cpp:28
Real cos_alpha
Definition: ERF_Plotfile2DInterpolator.cpp:27
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_LatLonMap.H:142
void rotation_at(amrex::Real x, amrex::Real y, amrex::Real &cos_alpha, amrex::Real &sin_alpha) const
Definition: ERF_LatLonMap.cpp:206
LatLonStatus locate(amrex::Real req_lat, amrex::Real req_lon, LatLonLocation &loc) const
Definition: ERF_LatLonMap.cpp:180
amrex::Box m_dom
Definition: ERF_LatLonMap.H:159
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > m_dx
Definition: ERF_LatLonMap.H:161
amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > m_problo
Definition: ERF_LatLonMap.H:160
LatLonMap(const amrex::MultiFab &lat, const amrex::MultiFab &lon, const amrex::BoxArray &ba2d, const amrex::DistributionMapping &dm, const amrex::Geometry &geom0)
Definition: ERF_LatLonMap.cpp:150
amrex::MultiFab m_ll
Definition: ERF_LatLonMap.H:158
real(c_double), parameter epsilon
Definition: ERF_module_model_constants.F90:12
real(c_double), private di
Definition: ERF_module_mp_morr_two_moment.F90:203
Definition: ERF_LatLonMap.H:86
amrex::Real cos_alpha
Definition: ERF_LatLonMap.H:101
amrex::Real lat
Definition: ERF_LatLonMap.H:93
amrex::Real x
Definition: ERF_LatLonMap.H:88
amrex::Real near_lat
Definition: ERF_LatLonMap.H:97
amrex::Real y
Definition: ERF_LatLonMap.H:89
amrex::Real sin_alpha
Definition: ERF_LatLonMap.H:102
amrex::Real near_lon
Definition: ERF_LatLonMap.H:98
amrex::Real lon
Definition: ERF_LatLonMap.H:94