LCOV - code coverage report
Current view: top level - src/Model/Interface/GB - Sin.H (source / functions) Coverage Total Hit
Test: coverage_merged.info Lines: 100.0 % 14 14
Test Date: 2025-04-03 04:02:21 Functions: 100.0 % 5 5

            Line data    Source code
       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() {};
      24              :     Sin(IO::ParmParse &pp) {pp_queryclass(*this);};
      25           10 :     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              :     {
      38              :         theta0 = Util::Random()*Set::Constant::Pi;
      39              :         sigma0 = Util::Random();
      40              :         sigma1 = Util::Random();
      41              :     };
      42      2886464 :     Set::Scalar W(const Set::Scalar theta) const
      43              :     {
      44      2886464 :         return sigma0 + 0.5*sigma1*(1.0 - cos(n*(theta-theta0)));
      45              :     };
      46      1362712 :     Set::Scalar DW(const Set::Scalar theta) const
      47              :     {
      48      1362712 :         return 2.0*sigma1*sin(n*(theta-theta0));
      49              :     };
      50      1362712 :     Set::Scalar DDW(const Set::Scalar theta) const
      51              :     {
      52      1362712 :         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            2 :     static void Parse(Sin & value, amrex::ParmParse & pp)
      60              :     {
      61            2 :         pp_query("theta0",value.theta0); // Theta offset (degrees)
      62            2 :         value.theta0 *= 0.01745329251; // convert degrees into radians
      63            2 :         pp_query("sigma0",value.sigma0); // Minimum energy
      64            2 :         pp_query("sigma1",value.sigma1); // Energy multiplier
      65            2 :         pp_query("n",value.n); // Frequency number (integer)
      66            2 :     }
      67              :     
      68              : };
      69              : }
      70              : }
      71              : }
      72              : #endif
        

Generated by: LCOV version 2.0-1