Line data Source code
1 : !------------------------------------------------------------------------------- 2 : ! $Id$ 3 : !=============================================================================== 4 : module parameters_model 5 : 6 : ! Description: 7 : ! Contains model parameters that are determined at run time rather than 8 : ! compile time. 9 : ! 10 : ! References: 11 : ! None 12 : !------------------------------------------------------------------------------- 13 : 14 : use clubb_precision, only: & 15 : core_rknd 16 : 17 : implicit none 18 : 19 : private ! Default scope 20 : 21 : ! Maximum magnitude of PDF parameter 'mixt_frac'. 22 : real( kind = core_rknd ), public :: & 23 : mixt_frac_max_mag 24 : 25 : ! Model parameters and constraints setup in the namelists 26 : real( kind = core_rknd ), public :: & 27 : T0 = 300._core_rknd, & ! Reference temperature (usually 300) [K] 28 : ts_nudge = 0._core_rknd ! Timescale of u/v nudging [s] 29 : 30 : real( kind = core_rknd), public :: & 31 : rtm_min = epsilon( rtm_min ), & ! Value below which rtm will be nudged [kg/kg] 32 : rtm_nudge_max_altitude = 10000._core_rknd ! Highest altitude at which to nudge rtm [m] 33 : 34 : public :: setup_parameters_model 35 : 36 : contains 37 : 38 : !------------------------------------------------------------------------------- 39 1536 : subroutine setup_parameters_model ( T0_in, ts_nudge_in, Skw_max_mag ) 40 : 41 : ! Description: 42 : ! Sets parameters to their initial values 43 : ! 44 : ! References: 45 : ! None 46 : !------------------------------------------------------------------------------- 47 : 48 : use clubb_precision, only: & 49 : core_rknd ! Variable(s) 50 : 51 : implicit none 52 : 53 : !------------------------ Input Variables ------------------------ 54 : real( kind = core_rknd ), intent(in) :: & 55 : T0_in, & ! Ref. temperature [K] 56 : ts_nudge_in, & ! Timescale for u/v nudging [s] 57 : Skw_max_mag ! Maximum allowable magnitude of Skewness [-] 58 : 59 : !------------------------ Begin Code ------------------------ 60 : 61 : ! Formula from subroutine pdf_closure, where sigma_sqd_w = 0.4 and Skw = 62 : ! Skw_max_mag in this formula. Note that this is constant, but can't appear 63 : ! with a Fortran parameter attribute, so we define it here. 64 : mixt_frac_max_mag = 1.0_core_rknd & 65 : - ( 0.5_core_rknd * ( 1.0_core_rknd - Skw_max_mag / & 66 : sqrt( 4.0_core_rknd * ( 1.0_core_rknd - 0.4_core_rknd )**3 & 67 1536 : + Skw_max_mag**2 ) ) ) ! Known magic number 68 : 69 1536 : T0 = T0_in 70 1536 : ts_nudge = ts_nudge_in 71 : 72 1536 : return 73 : end subroutine setup_parameters_model 74 : !------------------------------------------------------------------------------- 75 : 76 : end module parameters_model