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
12namespace Model
13{
14namespace Interface
15{
16namespace GB
17{
18class Sin : public GB
19{
20public:
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 };
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
55private:
56 Set::Scalar theta0 = NAN, sigma0 = NAN, sigma1 = NAN, n = 4.0;
57
58public:
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
#define pp_query(...)
Definition ParmParse.H:106
#define pp_queryclass(...)
Definition ParmParse.H:107
Sin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
Definition Sin.H:26
static void Parse(Sin &value, amrex::ParmParse &pp)
Definition Sin.H:59
Set::Scalar theta0
Definition Sin.H:56
Set::Scalar sigma1
Definition Sin.H:56
Set::Scalar sigma0
Definition Sin.H:56
static constexpr const char * name
Definition Sin.H:21
Sin(IO::ParmParse &pp, std::string name)
Definition Sin.H:25
Set::Scalar DW(const Set::Scalar theta) const
Definition Sin.H:46
Set::Scalar n
Definition Sin.H:56
void Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
Definition Sin.H:30
Set::Scalar DDW(const Set::Scalar theta) const
Definition Sin.H:50
Sin(IO::ParmParse &pp)
Definition Sin.H:24
Set::Scalar W(const Set::Scalar theta) const
Definition Sin.H:42
static const Set::Scalar Pi
Definition Set.H:286
amrex::Real Scalar
Definition Base.H:19
Set::Scalar Random()
Definition Set.cpp:9