WarpX
Loading...
Searching...
No Matches
MacroscopicProperties.H
Go to the documentation of this file.
1/* Copyright 2020 Revathi Jambunathan
2 *
3 * This file is part of WarpX.
4 *
5 * License: BSD-3-Clause-LBNL
6 */
7
8#ifndef WARPX_MACROSCOPICPROPERTIES_H_
9#define WARPX_MACROSCOPICPROPERTIES_H_
10
12
13#include "Utils/WarpXConst.H"
14
15#include <AMReX_Array.H>
16#include <AMReX_BoxArray.H>
18#include <AMReX_Extension.H>
19#include <AMReX_GpuQualifiers.H>
20#include <AMReX_IntVect.H>
21#include <AMReX_MultiFab.H>
22#include <AMReX_Parser.H>
23#include <AMReX_REAL.H>
24
25#include <memory>
26#include <string>
27
28
34{
35public:
36 MacroscopicProperties (); // constructor
38 void ReadParameters ();
39
47 void AllocateLevelMFs (
48 const amrex::BoxArray& ba,
50 const amrex::IntVect& ng_EB_alloc );
51
60 void InitData (
61 const amrex::Geometry& geom,
62 const amrex::IntVect& Ex_stag,
63 const amrex::IntVect& Ey_stag,
64 const amrex::IntVect& Ez_stag);
65
72
77 amrex::ParserExecutor<3> const& macro_parser,
79 const amrex::RealBox& prob_domain_lev);
80
95
96private:
97
99 amrex::Real m_sigma = 0.0;
103 amrex::Real m_mu = PhysConst::mu0;
105 std::unique_ptr<amrex::MultiFab> m_sigma_mf;
107 std::unique_ptr<amrex::MultiFab> m_eps_mf;
109 std::unique_ptr<amrex::MultiFab> m_mu_mf;
110
112 std::string m_sigma_s = "constant";
114 std::string m_epsilon_s = "constant";
116 std::string m_mu_s = "constant";
117
121 std::string m_str_mu_function;
123 std::unique_ptr<amrex::Parser> m_sigma_parser;
124 std::unique_ptr<amrex::Parser> m_epsilon_parser;
125 std::unique_ptr<amrex::Parser> m_mu_parser;
126
127};
128
138
140 static amrex::Real alpha (amrex::Real const sigma,
141 amrex::Real const epsilon,
142 amrex::Real dt) {
143 using namespace amrex;
144 const amrex::Real fac1 = 0.5_rt * sigma * dt / epsilon;
145 const amrex::Real alpha = (1._rt - fac1)/(1._rt + fac1);
146 return alpha;
147 }
148
150 static amrex::Real beta (amrex::Real const sigma,
151 amrex::Real const epsilon,
152 amrex::Real dt) {
153 using namespace amrex;
154 const amrex::Real fac1 = 0.5_rt * sigma * dt / epsilon;
155 const amrex::Real beta = dt / ( epsilon * (1._rt + fac1) );
156 return beta;
157 }
158
159};
160
170
172 static amrex::Real alpha (amrex::Real const sigma,
173 amrex::Real const epsilon,
174 amrex::Real dt) {
175 using namespace amrex;
176 const amrex::Real fac1 = sigma * dt / epsilon;
177 const amrex::Real alpha = (1._rt)/(1._rt + fac1);
178 return alpha;
179 }
180
182 static amrex::Real beta (amrex::Real const sigma,
183 amrex::Real const epsilon,
184 amrex::Real dt) {
185 using namespace amrex;
186 const amrex::Real fac1 = sigma * dt / epsilon;
187 const amrex::Real beta = dt / ( epsilon * (1._rt + fac1) );
188 return beta;
189 }
190
191};
192
193#endif // WARPX_MACROSCOPIC_PROPERTIES_H_
#define AMREX_FORCE_INLINE
#define AMREX_GPU_HOST_DEVICE
amrex::Real m_epsilon
Definition MacroscopicProperties.H:101
amrex::GpuArray< int, 3 > epsilon_IndexType
Definition MacroscopicProperties.H:84
amrex::GpuArray< int, 3 > mu_IndexType
Definition MacroscopicProperties.H:86
std::string m_sigma_s
Definition MacroscopicProperties.H:112
amrex::MultiFab & getmu_mf()
Definition MacroscopicProperties.H:71
amrex::Real m_mu
Definition MacroscopicProperties.H:103
amrex::MultiFab & getsigma_mf()
Definition MacroscopicProperties.H:67
amrex::GpuArray< int, 3 > sigma_IndexType
Definition MacroscopicProperties.H:82
std::string m_str_epsilon_function
Definition MacroscopicProperties.H:120
std::string m_str_mu_function
Definition MacroscopicProperties.H:121
amrex::Real m_sigma
Definition MacroscopicProperties.H:99
void AllocateLevelMFs(const amrex::BoxArray &ba, const amrex::DistributionMapping &dm, const amrex::IntVect &ng_EB_alloc)
Allocate multifabs storing macroscopic multifabs.
Definition MacroscopicProperties.cpp:121
void InitializeMacroMultiFabUsingParser(amrex::MultiFab *macro_mf, amrex::ParserExecutor< 3 > const &macro_parser, const amrex::GpuArray< amrex::Real, 3 > &dx_lev, const amrex::RealBox &prob_domain_lev)
Definition MacroscopicProperties.cpp:206
std::unique_ptr< amrex::Parser > m_mu_parser
Definition MacroscopicProperties.H:125
MacroscopicProperties()
Definition MacroscopicProperties.cpp:27
std::unique_ptr< amrex::MultiFab > m_mu_mf
Definition MacroscopicProperties.H:109
std::string m_str_sigma_function
Definition MacroscopicProperties.H:119
void ReadParameters()
Definition MacroscopicProperties.cpp:33
std::unique_ptr< amrex::Parser > m_epsilon_parser
Definition MacroscopicProperties.H:124
amrex::MultiFab & getepsilon_mf()
Definition MacroscopicProperties.H:69
amrex::GpuArray< int, 3 > Ex_IndexType
Definition MacroscopicProperties.H:88
amrex::GpuArray< int, 3 > Ey_IndexType
Definition MacroscopicProperties.H:90
std::string m_mu_s
Definition MacroscopicProperties.H:116
std::string m_epsilon_s
Definition MacroscopicProperties.H:114
amrex::GpuArray< int, 3 > Ez_IndexType
Definition MacroscopicProperties.H:92
amrex::GpuArray< int, 3 > macro_cr_ratio
Definition MacroscopicProperties.H:94
std::unique_ptr< amrex::Parser > m_sigma_parser
Definition MacroscopicProperties.H:123
std::unique_ptr< amrex::MultiFab > m_sigma_mf
Definition MacroscopicProperties.H:105
std::unique_ptr< amrex::MultiFab > m_eps_mf
Definition MacroscopicProperties.H:107
void InitData(const amrex::Geometry &geom, const amrex::IntVect &Ex_stag, const amrex::IntVect &Ey_stag, const amrex::IntVect &Ez_stag)
Initialize multifabs storing macroscopic multifabs.
Definition MacroscopicProperties.cpp:135
constexpr auto epsilon_0
vacuum permittivity: dielectric permittivity of vacuum [F/m]
Definition constant.H:152
constexpr auto mu0
vacuum permeability: magnetic permeability of vacuum = 4.0e-7 * pi [H/m]
Definition constant.H:155
IntVectND< 3 > IntVect
This struct contains only static functions to compute the coefficients for the BackwardEuler scheme o...
Definition MacroscopicProperties.H:169
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real beta(amrex::Real const sigma, amrex::Real const epsilon, amrex::Real dt)
Definition MacroscopicProperties.H:182
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real alpha(amrex::Real const sigma, amrex::Real const epsilon, amrex::Real dt)
Definition MacroscopicProperties.H:172
This struct contains only static functions to compute the coefficients for the Lax-Wendroff scheme of...
Definition MacroscopicProperties.H:137
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real beta(amrex::Real const sigma, amrex::Real const epsilon, amrex::Real dt)
Definition MacroscopicProperties.H:150
AMREX_GPU_HOST_DEVICE static AMREX_FORCE_INLINE amrex::Real alpha(amrex::Real const sigma, amrex::Real const epsilon, amrex::Real dt)
Definition MacroscopicProperties.H:140