LCOV - code coverage report
Current view: top level - src/Model/Interface/GB - AbsSin.H (source / functions) Hit Total Coverage
Test: coverage_merged.info Lines: 0 13 0.0 %
Date: 2024-11-18 05:28:54 Functions: 0 5 0.0 %

          Line data    Source code
       1             : #ifndef MODEL_INTERFACE_GB_ABSSIN_H
       2             : #define MODEL_INTERFACE_GB_ABSSIN_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 AbsSin : public GB
      19             : {
      20             : public:
      21             :     static constexpr const char* name = "abssin";
      22             : 
      23             : AbsSin() {};
      24             : AbsSin(IO::ParmParse &pp) {pp_queryclass(*this);};
      25           0 : AbsSin(IO::ParmParse &pp, std::string name) {pp_queryclass(name,*this);};
      26             : 
      27             : AbsSin(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
      28             : {       
      29             :     Define(_theta0,_sigma0,_sigma1);
      30             : };
      31             : void Define(amrex::Real _theta0, amrex::Real _sigma0, amrex::Real _sigma1)
      32             : {
      33             :     theta0 = _theta0;
      34             :     sigma0 = _sigma0;
      35             :     sigma1 = _sigma1;
      36             : };
      37             : void Randomize()
      38             : {
      39             :     theta0 = Util::Random()*Set::Constant::Pi;
      40             :     sigma0 = Util::Random();
      41             :     sigma1 = Util::Random();
      42             : };
      43           0 : Set::Scalar W(const Set::Scalar theta) const
      44             : {
      45             :     //sigma(theta)=sigma0+sigma1*fabs(sin(n*(theta-theta0)))
      46             :     //n=2:  
      47           0 :     return sigma0+sigma1*fabs(sin(2*(theta-theta0)));  
      48             :   
      49             : };
      50           0 : Set::Scalar DW(const Set::Scalar theta) const
      51             : {
      52             :     //sigma'(theta)=(n*sigma1*sin(n*(theta-theta0))*cos(n*(theta-theta0)))/fabs(sin(n*(theta-theta0)))
      53             :     //n=2:
      54           0 :     return (2*sigma1*sin(2*(theta-theta0))*cos(2*(theta-theta0)))/fabs(sin(2*(theta-theta0)));
      55             : };
      56           0 : Set::Scalar DDW(const Set::Scalar theta) const 
      57             : {
      58             :     //sigma''(theta)=-n^2*sigma1*fabs(sin(n*(theta-theta0)))
      59             :     //n=2:
      60           0 :     return -4*sigma1*fabs(sin(2*(theta-theta0)));
      61             : };
      62             :  
      63             : private:
      64             :     Set::Scalar theta0 = NAN, sigma0 = NAN, sigma1 = NAN;
      65             : 
      66             : public:    
      67           0 :     static void Parse(AbsSin & value, amrex::ParmParse & pp)
      68             :     {
      69           0 :         pp_query("theta0",value.theta0); // Angle offset (degrees)
      70           0 :         value.theta0 *= 0.01745329251; // convert degrees into radians
      71           0 :         pp_query("sigma0",value.sigma0); // Minimum energy
      72           0 :         pp_query("sigma1",value.sigma1); // Energy multiplier
      73           0 :     }
      74             : 
      75             : };
      76             : }
      77             : }
      78             : }
      79             : 
      80             : #endif

Generated by: LCOV version 1.14