Alamo
Sin.H
Go to the documentation of this file.
1 #ifndef MODEL_INTERFACE_CRACK_SIN_H
2 #define MODEL_INTERFACE_CRACK_SIN_H
3 
4 #include <iostream>
5 #include <fstream>
6 
7 #include "AMReX.H"
8 #include "Crack.H"
9 #include "Set/Set.H"
10 #include "Util/Util.H"
11 
12 namespace Model
13 {
14 namespace Interface
15 {
16 namespace Crack
17 {
18 class Sin : public Crack
19 {
20 public:
21  Sin(){};
22 
23  Set::Scalar Gc(Set::Scalar theta) {return Gc0 + 0.5*Gc1*(1.0 - cos(4.0*(theta-theta0))); }
24  Set::Scalar DGc(Set::Scalar theta) { return 2.0*Gc1*sin(4.0*(theta-theta0)); }
25  Set::Scalar DDGc(Set::Scalar theta) { return 8.0*Gc1*cos(4.0*(theta-theta0)); }
26  Set::Scalar Zeta(Set::Scalar /*theta*/) { return zeta; }
27  Set::Scalar Mobility(Set::Scalar /*theta*/) { return mobility; }
29 
30 private:
31  Set::Scalar zeta = 1.e-2, mobility = 1.e-2;
33  Set::Scalar Gc1 = 0.49;
36 
37 public:
38  static void Parse(Sin & value, IO::ParmParse & pp)
39  {
40  pp_query("Gc0",value.Gc0); // Min Gc (fracture energy) value
41  pp_query("Gc1",value.Gc1); // Max Gc (fracture energy)value
42  pp_query("theta0",value.theta0); // Angle offset
43  pp_query("zeta",value.zeta); // Regularization
44  pp_query("mobility",value.mobility); // Crack mobiilty
45  pp_query("threshold",value.threshold); // Threshold for kinetics
46 
47  std::string gtype = "";
48  std::string wtype = "";
49  pp_query("gtype", gtype); // Type of g function to use {square, multiwell, 4c3, squarep, squarepexp, cubicm}
50  pp_query("wtype", wtype); // Type o w function to use {square, multiwell, multiwell2, 4c3}
51 
52  Set::Scalar ductile_exponent = 1.;
53  if(gtype == "squarepexp"|| gtype == "cubicm") pp_query("exponent",ductile_exponent);
54 
55  std::map<std::string,Model::Interface::Crack::Crack::GType> g_map;
56  g_map["square"] = Model::Interface::Crack::Crack::GType::GSQUARE;
57  g_map["multiwell"] = Model::Interface::Crack::Crack::GType::GMULTIWELL;
58  g_map["4c3"] = Model::Interface::Crack::Crack::GType::GPHI4C3;
59  g_map["squarep"] = Model::Interface::Crack::Crack::GType::GSQUAREP;
60  g_map["squarepexp"] = Model::Interface::Crack::Crack::GType::GSQUAREPM;
61  g_map["cubicm"] = Model::Interface::Crack::Crack::GType::GCUBICM;
62 
63  std::map<std::string,Model::Interface::Crack::Crack::WType> w_map;
64  w_map["square"] = Model::Interface::Crack::Crack::WType::WSQUARE;
65  w_map["multiwell"] = Model::Interface::Crack::Crack::WType::WMULTIWELL;
66  w_map["multiwell2"] = Model::Interface::Crack::Crack::WType::WMULTIWELL2;
67  w_map["4c3"] = Model::Interface::Crack::Crack::WType::WPHI4C3;
68 
69  value.SetGType(g_map[gtype]);
70  value.SetWType(w_map[wtype]);
71 
72  value.SetDuctileExponent(ductile_exponent);
73  }
74 };
75 }
76 }
77 }
78 #endif
Model::Interface::Crack::Sin::DrivingForceThreshold
Set::Scalar DrivingForceThreshold(Set::Scalar)
Definition: Sin.H:28
Util.H
Model::Interface::Crack::Sin::theta0
Set::Scalar theta0
Definition: Sin.H:34
Model::Interface::Crack::Sin::zeta
Set::Scalar zeta
Definition: Sin.H:31
Model::Interface::Crack::Sin
Definition: Sin.H:18
Model::Interface::Crack::Crack::SetDuctileExponent
void SetDuctileExponent(const Set::Scalar m)
Definition: Crack.H:110
pp_query
#define pp_query(...)
Definition: ParmParse.H:104
Set::Scalar
amrex::Real Scalar
Definition: Base.H:19
Model::Interface::Crack::Sin::Gc1
Set::Scalar Gc1
Definition: Sin.H:33
Model::Interface::Crack::Sin::DDGc
Set::Scalar DDGc(Set::Scalar theta)
Definition: Sin.H:25
Model::Interface::Crack::Sin::mobility
Set::Scalar mobility
Definition: Sin.H:31
Crack.H
Model::Interface::Crack::Sin::Zeta
Set::Scalar Zeta(Set::Scalar)
Definition: Sin.H:26
Model::Interface::Crack::Sin::Parse
static void Parse(Sin &value, IO::ParmParse &pp)
Definition: Sin.H:38
Model::Interface::Crack::Sin::Gc0
Set::Scalar Gc0
Definition: Sin.H:32
Model::Interface::Crack::Sin::Sin
Sin()
Definition: Sin.H:21
Model::Interface::Crack::Sin::threshold
Set::Scalar threshold
Definition: Sin.H:35
Model::Interface::Crack::Sin::Gc
Set::Scalar Gc(Set::Scalar theta)
Definition: Sin.H:23
Model::Interface::Crack::Crack::SetWType
void SetWType(const WType a_type)
Definition: Crack.H:105
Set.H
IO::ParmParse
Definition: ParmParse.H:110
Model::Interface::Crack::Sin::Mobility
Set::Scalar Mobility(Set::Scalar)
Definition: Sin.H:27
Model::Interface::Crack::Crack::SetGType
void SetGType(const GType a_type)
Definition: Crack.H:100
Model
Definition: Constant.H:12
Model::Interface::Crack::Sin::DGc
Set::Scalar DGc(Set::Scalar theta)
Definition: Sin.H:24
Model::Interface::Crack::Crack
Definition: Crack.H:16