Skip to content
Snippets Groups Projects
sfx_sheba.h 1.48 KiB
Newer Older
  • Learn to ignore specific revisions
  • 数学の武士's avatar
    数学の武士 committed
    #pragma once
    
    数学の武士's avatar
    数学の武士 committed
    #include "sfx_template_parameters.h"
    
    数学の武士's avatar
    数学の武士 committed
    #include <cstddef>
    
    
    数学の武士's avatar
    数学の武士 committed
    template<typename T, MemType memIn, MemType memOut, MemType RunMem >
    
    数学の武士's avatar
    数学の武士 committed
    class FluxSheba
    
    数学の武士's avatar
    数学の武士 committed
    {
    private:
        T *U, *dT, *Tsemi, *dQ, *h, *in_z0_m;
        T *zeta, *Rib, *Re, *B, *z0_m, *z0_t, *Rib_conv_lim, *Cm, *Ct, *Km, *Pr_t_inv;
    
    
    数学の武士's avatar
    .  
    数学の武士 committed
        T kappa, Pr_t_0_inv, Pr_t_inf_inv, 
        alpha_m, alpha_h,
        a_m, a_h, 
        b_m, b_h,
        c_h,
        Rib_max, Re_rough_min, 
        B1_rough, B2_rough, 
        B_max_land, B_max_ocean, B_max_lake,
        gamma_c,  
        Re_visc_min,
        Pr_m, nu_air, g;
    
    数学の武士's avatar
    数学の武士 committed
    
        int grid_size;
        bool ifAllocated;
        size_t allocated_size;
    public:
    
    数学の武士's avatar
    数学の武士 committed
        FluxSheba();
    
    数学の武士's avatar
    .  
    数学の武士 committed
        void set_params(const int grid_size, const T kappa, const T Pr_t_0_inv, 
        const T alpha_m, const T alpha_h, 
        const float a_m, const float a_h, 
        const float b_m, const float b_h,
        const float c_h,
        const T Re_rough_min, 
    
    数学の武士's avatar
    数学の武士 committed
        const T B1_rough, const T B2_rough,
        const T B_max_land, const T B_max_ocean, const T B_max_lake,
        const T gamma_c, const T Re_visc_min,
        const T Pr_m, const T nu_air, const T g);
    
    数学の武士's avatar
    .  
    数学の武士 committed
        ~FluxSheba();
    
    数学の武士's avatar
    数学の武士 committed
    
    
    数学の武士's avatar
    .  
    数学の武士 committed
        void compute_flux_sheba(T *zeta_, T *Rib_, T *Re_, T *B_, T *z0_m_, T *z0_t_, T *Rib_conv_lim_, T *Cm_, T *Ct_, T *Km_, T *Pr_t_inv_,
    
    数学の武士's avatar
    数学の武士 committed
        T *U_, T *dT_, T *Tsemi_, T *dQ_, T *h_, T *in_z0_m_, 
    
    数学の武士's avatar
    .  
    数学の武士 committed
        const int maxiters_charnock);
    
    数学の武士's avatar
    数学の武士 committed
    
    
    数学の武士's avatar
    数学の武士 committed
    private:
        void set_data( T *zeta_, T *Rib_, T *Re_, T *B_, T *z0_m_, T *z0_t_, T *Rib_conv_lim_, T *Cm_, T *Ct_, T *Km_, T *Pr_t_inv_,
        T *U_, T *dT_, T *Tsemi_, T *dQ_, T *h_, T *in_z0_m_);
    
    数学の武士's avatar
    数学の武士 committed
    };