Alamo
Sin.H
Go to the documentation of this file.
1 #ifndef MODEL_INTERFACE_GB_SIN_H
2 #define MODEL_INTERFACE_GB_SIN_H
3 
4 #include <iostream>
5 #include <fstream>
6 
7 #include "AMReX.H"
8 #include "GB.H"
9 #include "Set/Set.H"
10 #include "Util/Util.H"
11 
12 namespace Model
13 {
14 namespace Interface
15 {
16 namespace GB
17 {
18 class Sin : public GB
19 {
20 public:
21  static constexpr const char* name = "sin";
22 
23  Sin() {};
25  Sin(IO::ParmParse &pp,std::string name) {pp_queryclass(name,*this);};
26  Sin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
27  {
28  Define(_theta0,_sigma0,_sigma1);
29  };
30  void Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
31  {
32  theta0 = _theta0;
33  sigma0 = _sigma0;
34  sigma1 = _sigma1;
35  };
36  void Randomize()
37  {
39  sigma0 = Util::Random();
40  sigma1 = Util::Random();
41  };
42  Set::Scalar W(const Set::Scalar theta) const
43  {
44  return sigma0 + 0.5*sigma1*(1.0 - cos(n*(theta-theta0)));
45  };
46  Set::Scalar DW(const Set::Scalar theta) const
47  {
48  return 2.0*sigma1*sin(n*(theta-theta0));
49  };
50  Set::Scalar DDW(const Set::Scalar theta) const
51  {
52  return 8.0*sigma1*cos(n*(theta-theta0));
53  };
54 
55 private:
56  Set::Scalar theta0 = NAN, sigma0 = NAN, sigma1 = NAN, n = 4.0;
57 
58 public:
59  static void Parse(Sin & value, amrex::ParmParse & pp)
60  {
61  pp_query("theta0",value.theta0); // Theta offset (degrees)
62  value.theta0 *= 0.01745329251; // convert degrees into radians
63  pp_query("sigma0",value.sigma0); // Minimum energy
64  pp_query("sigma1",value.sigma1); // Energy multiplier
65  pp_query("n",value.n); // Frequency number (integer)
66  }
67 
68 };
69 }
70 }
71 }
72 #endif
Model::Interface::GB::Sin::theta0
Set::Scalar theta0
Definition: Sin.H:56
Util.H
Model::Interface::GB::GB
Definition: GB.H:18
Model::Interface::GB::Sin::Parse
static void Parse(Sin &value, amrex::ParmParse &pp)
Definition: Sin.H:59
pp_query
#define pp_query(...)
Definition: ParmParse.H:105
Model::Interface::GB::Sin::Sin
Sin()
Definition: Sin.H:23
Util::Random
Set::Scalar Random()
Definition: Set.cpp:9
Set::Scalar
amrex::Real Scalar
Definition: Base.H:19
Model::Interface::GB::Sin::DDW
Set::Scalar DDW(const Set::Scalar theta) const
Definition: Sin.H:50
pp_queryclass
#define pp_queryclass(...)
Definition: ParmParse.H:106
Model::Interface::GB::Sin
Definition: Sin.H:18
GB.H
Model::Interface::GB::Sin::n
Set::Scalar n
Definition: Sin.H:56
Model::Interface::GB::Sin::DW
Set::Scalar DW(const Set::Scalar theta) const
Definition: Sin.H:46
Model::Interface::GB::Sin::Sin
Sin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
Definition: Sin.H:26
Model::Interface::GB::Sin::sigma0
Set::Scalar sigma0
Definition: Sin.H:56
Model::Interface::GB::Sin::name
static constexpr const char * name
Definition: Sin.H:21
Set.H
Set::Constant::Pi
static const Set::Scalar Pi
Definition: Set.H:286
Model::Interface::GB::Sin::W
Set::Scalar W(const Set::Scalar theta) const
Definition: Sin.H:42
IO::ParmParse
Definition: ParmParse.H:112
Model::Interface::GB::Sin::Sin
Sin(IO::ParmParse &pp)
Definition: Sin.H:24
Model::Interface::GB::Sin::Randomize
void Randomize()
Definition: Sin.H:36
Model
Definition: Constant.H:12
Model::Interface::GB::Sin::Sin
Sin(IO::ParmParse &pp, std::string name)
Definition: Sin.H:25
Model::Interface::GB::Sin::Define
void Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
Definition: Sin.H:30
Model::Interface::GB::Sin::sigma1
Set::Scalar sigma1
Definition: Sin.H:56