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  Sin() {};
23  Sin(IO::ParmParse &pp,std::string name) {pp_queryclass(name,*this);};
24  Sin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
25  {
26  Define(_theta0,_sigma0,_sigma1);
27  };
28  void Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
29  {
30  theta0 = _theta0;
31  sigma0 = _sigma0;
32  sigma1 = _sigma1;
33  };
34  void Randomize()
35  {
37  sigma0 = Util::Random();
38  sigma1 = Util::Random();
39  };
40  Set::Scalar W(const Set::Scalar theta) const
41  {
42  return sigma0 + 0.5*sigma1*(1.0 - cos(n*(theta-theta0)));
43  };
44  Set::Scalar DW(const Set::Scalar theta) const
45  {
46  return 2.0*sigma1*sin(n*(theta-theta0));
47  };
48  Set::Scalar DDW(const Set::Scalar theta) const
49  {
50  return 8.0*sigma1*cos(n*(theta-theta0));
51  };
52 
53 private:
54  Set::Scalar theta0 = NAN, sigma0 = NAN, sigma1 = NAN, n = 4.0;
55 
56 public:
57  static void Parse(Sin & value, amrex::ParmParse & pp)
58  {
59  pp_query("theta0",value.theta0); // Theta offset (degrees)
60  value.theta0 *= 0.01745329251; // convert degrees into radians
61  pp_query("sigma0",value.sigma0); // Minimum energy
62  pp_query("sigma1",value.sigma1); // Energy multiplier
63  pp_query("n",value.n); // Frequency number (integer)
64  }
65 
66 };
67 }
68 }
69 }
70 #endif
Model::Interface::GB::Sin::theta0
Set::Scalar theta0
Definition: Sin.H:54
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:57
pp_query
#define pp_query(...)
Definition: ParmParse.H:104
Model::Interface::GB::Sin::Sin
Sin()
Definition: Sin.H:21
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:48
pp_queryclass
#define pp_queryclass(...)
Definition: ParmParse.H:105
Model::Interface::GB::Sin
Definition: Sin.H:18
GB.H
Model::Interface::GB::Sin::n
Set::Scalar n
Definition: Sin.H:54
Model::Interface::GB::Sin::DW
Set::Scalar DW(const Set::Scalar theta) const
Definition: Sin.H:44
Model::Interface::GB::Sin::Sin
Sin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
Definition: Sin.H:24
Model::Interface::GB::Sin::sigma0
Set::Scalar sigma0
Definition: Sin.H:54
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:40
IO::ParmParse
Definition: ParmParse.H:110
Model::Interface::GB::Sin::Sin
Sin(IO::ParmParse &pp)
Definition: Sin.H:22
Model::Interface::GB::Sin::Randomize
void Randomize()
Definition: Sin.H:34
Model
Definition: Constant.H:12
Model::Interface::GB::Sin::Sin
Sin(IO::ParmParse &pp, std::string name)
Definition: Sin.H:23
Model::Interface::GB::Sin::Define
void Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
Definition: Sin.H:28
Model::Interface::GB::Sin::sigma1
Set::Scalar sigma1
Definition: Sin.H:54