ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_Kessler.H File Reference
#include <string>
#include <vector>
#include <memory>
#include <AMReX_FArrayBox.H>
#include <AMReX_Geometry.H>
#include <AMReX_TableData.H>
#include <AMReX_MultiFabUtil.H>
#include "ERF_Constants.H"
#include "ERF_MicrophysicsConstants.H"
#include "ERF_KesslerUtils.H"
#include "ERF_MicrophysicsUtils.H"
#include "ERF_IndexDefines.H"
#include "ERF_DataStruct.H"
#include "ERF_NullMoist.H"
#include "ERF_SurfacePrecipitation.H"
Include dependency graph for ERF_Kessler.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  Kessler
 

Namespaces

 MicVar_Kess
 

Enumerations

enum  {
  MicVar_Kess::rho =0 , MicVar_Kess::theta , MicVar_Kess::tabs , MicVar_Kess::pres ,
  MicVar_Kess::qt , MicVar_Kess::qv , MicVar_Kess::qcl , MicVar_Kess::qp ,
  MicVar_Kess::rain_accum , MicVar_Kess::NumVars
}
 

Functions

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void kessler_copy_state_to_micro_cell (const amrex::Array4< const amrex::Real > &states, const amrex::Array4< const amrex::Real > &base, const amrex::Array4< amrex::Real > &rho, const amrex::Array4< amrex::Real > &theta, const amrex::Array4< amrex::Real > &qv, const amrex::Array4< amrex::Real > &qc, const amrex::Array4< amrex::Real > &qp, const amrex::Array4< amrex::Real > &qt, const amrex::Array4< amrex::Real > &tabs, const amrex::Array4< amrex::Real > &pres, const amrex::Real rdOcp, const bool use_anelastic_reference_pressure, const int i, const int j, const int k) noexcept
 

Function Documentation

◆ kessler_copy_state_to_micro_cell()

AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void kessler_copy_state_to_micro_cell ( const amrex::Array4< const amrex::Real > &  states,
const amrex::Array4< const amrex::Real > &  base,
const amrex::Array4< amrex::Real > &  rho,
const amrex::Array4< amrex::Real > &  theta,
const amrex::Array4< amrex::Real > &  qv,
const amrex::Array4< amrex::Real > &  qc,
const amrex::Array4< amrex::Real > &  qp,
const amrex::Array4< amrex::Real > &  qt,
const amrex::Array4< amrex::Real > &  tabs,
const amrex::Array4< amrex::Real > &  pres,
const amrex::Real  rdOcp,
const bool  use_anelastic_reference_pressure,
const int  i,
const int  j,
const int  k 
)
noexcept
56 {
57  const amrex::Real rho_value = states(i,j,k,Rho_comp);
58  const amrex::Real rho_theta = states(i,j,k,RhoTheta_comp);
59  const amrex::Real qv_value = states(i,j,k,RhoQ1_comp) / rho_value;
60 
61  rho(i,j,k) = rho_value;
62  theta(i,j,k) = rho_theta / rho_value;
63  qv(i,j,k) = qv_value;
64  qc(i,j,k) = states(i,j,k,RhoQ2_comp) / rho_value;
65  qp(i,j,k) = states(i,j,k,RhoQ3_comp) / rho_value;
66  qt(i,j,k) = qv(i,j,k) + qc(i,j,k);
67 
68  const amrex::Real p0 = use_anelastic_reference_pressure
69  ? base(i,j,k,BaseState::p0_comp) : amrex::Real(0.0);
71  rho_value, rho_theta, qv_value, rdOcp,
72  use_anelastic_reference_pressure, p0);
73  tabs(i,j,k) = thermo.temperature;
74  // Kessler's saturation helpers use mbar / hPa.
75  pres(i,j,k) = amrex::Real(0.01) * thermo.pressure_pa;
76 }
#define Rho_comp
Definition: ERF_IndexDefines.H:39
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:40
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:46
#define RhoQ3_comp
Definition: ERF_IndexDefines.H:47
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:45
const Real rdOcp
Definition: ERF_InitCustomPert_ABL.H:72
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE MicrophysicsThermoState diagnose_microphysics_thermo_state(const amrex::Real rho, const amrex::Real rho_theta, const amrex::Real qv, const amrex::Real rdOcp, const bool use_anelastic_reference_pressure, const amrex::Real p0) noexcept
Definition: ERF_MicrophysicsUtils.H:35
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ p0_comp
Definition: ERF_IndexDefines.H:77
@ qp
Definition: ERF_Kessler.H:34
@ tabs
Definition: ERF_Kessler.H:27
@ pres
Definition: ERF_Kessler.H:28
@ rho
Definition: ERF_Kessler.H:25
@ theta
Definition: ERF_Kessler.H:26
@ qt
Definition: ERF_Kessler.H:30
@ qv
Definition: ERF_Kessler.H:31
@ qc
Definition: ERF_SatAdj.H:42
Definition: ERF_ConsoleIO.cpp:15
real(c_double), parameter p0
Definition: ERF_module_model_constants.F90:40
Definition: ERF_MicrophysicsUtils.H:22
amrex::Real pressure_pa
Definition: ERF_MicrophysicsUtils.H:23
amrex::Real temperature
Definition: ERF_MicrophysicsUtils.H:24
Here is the call graph for this function: