FE-Project
Loading...
Searching...
No Matches
scale_atm_phy_rd_solarins_simple Module Reference

module FElib / Atmosphere / Physics radiation / Solar insolation / Simple gray-radiation scheme More...

Functions/Subroutines

subroutine, public atm_phy_rd_solarins_simple_setup ()
 Setup the simplified solar insolation module.
subroutine, public atm_phy_rd_solarins_simple_update ()
subroutine, public atm_phy_rd_solarins_simple_get (solins, cossza, lat, np)
 Get solar insolation and cosine of the solar zenith angle for the given latitude array.

Detailed Description

module FElib / Atmosphere / Physics radiation / Solar insolation / Simple gray-radiation scheme

Description
A module for idealized solar insolation scheme
Author
Yuta Kawai, Team SCALE
Reference
  • Frierson, D.M.W., Held, I.M., and Zurita-Gotor, P. 2006: A gray-radiation aquaplanet moist GCM. Part I: Static stability and eddy scale. J. Atmos. Sci., 63, 2548–2566.
NAMELIST
  • PARAM_ATMOS_SOLARINS_SIMPLE
    nametypedefault valuecomment
    SOLARINS_TYPEcharacter(len=H_SHORT)'ANNUAL_MEAN'
    CONST_FLUXreal(RP)340.0_RPConstant solar flux value [W/m2]
    ORBIT_REFERENCE_YEARinteger2000Reference year for orbital calculations
    ANNUAL_MEAN_YEARinteger2000Year for computing annual mean insolation
    ANNUAL_SAMPLES_PER_DAYinteger1Number of samples per day for annual mean calculation
    CACHE_ANNUAL_MEANlogical.true.Flag to cache annual mean insolation
    FRIERSON2006_DELTA_Sreal(RP)1.4E0_RPParameter for latitudinal variation (Delta_s) in Frierson et al. (2006) insolation scheme

History Output
No history output

Function/Subroutine Documentation

◆ atm_phy_rd_solarins_simple_setup()

subroutine, public scale_atm_phy_rd_solarins_simple::atm_phy_rd_solarins_simple_setup

Setup the simplified solar insolation module.

Definition at line 84 of file scale_atm_phy_rd_solarins_simple.F90.

85 use scale_atmos_solarins, only: &
86 atmos_solarins_setup
87 implicit none
88 character(len=H_SHORT) :: SOLARINS_TYPE = 'ANNUAL_MEAN'
89 namelist / param_atmos_solarins_simple / &
90 solarins_type, &
91 const_flux, &
92 orbit_reference_year, &
93 annual_mean_year, &
94 annual_samples_per_day, &
95 cache_annual_mean, &
96 frierson2006_delta_s
97
98 integer :: ierr
99 !------------------------------------------------------------------------------
100
101 log_newline
102 log_info("ATMOS_PHY_RD_SOLARINS_SIMPLE_setup",*) 'Setup'
103
104 !--- read namelist
105 rewind(io_fid_conf)
106 read(io_fid_conf,nml=param_atmos_solarins_simple,iostat=ierr)
107 if( ierr < 0 ) then !--- missing
108 log_info("ATMOS_PHY_RD_SOLARINS_SIMPLE_setup",*) 'Not found namelist. Default used.'
109 elseif( ierr > 0 ) then !--- fatal error
110 log_error("ATMOS_PHY_RD_SOLARINS_SIMPLE_setup",*) 'Not appropriate names in namelist PARAM_ATMOS_SOLARINS_SIMPLE. Check!'
111 call prc_abort
112 endif
113 log_nml(param_atmos_solarins_simple)
114
115 select case (solarins_type)
116 case ('CONST')
117 solarins_type_id = solarins_simple_type_id_const
118 case ('ANNUAL_MEAN')
119 solarins_type_id = solarins_simple_type_id_annual_mean
120 case ('FRIERSON2006')
121 solarins_type_id = solarins_simple_type_id_frierson2006
122 case default
123 log_error("ATMOS_PHY_RD_SOLARINS_SIMPLE_setup",*) 'Not appropriate SOLARINS_TYPE. Check!'
124 call prc_abort
125 end select
126
127 !- Initializes orbital parameters, the vernal-equinox reference date, and related internal state.
128 ! Here, longitude and latitude are irrelevant because this module uses only the orbital state returned by ecliptic_longitude.
129 call atmos_solarins_setup( 0.0_rp, 0.0_rp, orbit_reference_year )
130
131 return

◆ atm_phy_rd_solarins_simple_update()

subroutine, public scale_atm_phy_rd_solarins_simple::atm_phy_rd_solarins_simple_update

Definition at line 135 of file scale_atm_phy_rd_solarins_simple.F90.

◆ atm_phy_rd_solarins_simple_get()

subroutine, public scale_atm_phy_rd_solarins_simple::atm_phy_rd_solarins_simple_get ( real(rp), dimension(np), intent(out) solins,
real(rp), dimension(np), intent(out) cossza,
real(rp), dimension(np), intent(in) lat,
integer, intent(in) np )

Get solar insolation and cosine of the solar zenith angle for the given latitude array.

Parameters
[in]npNumber of points
[out]solinsSolar insolation [W/m2] for each latitude point
[out]cosszaCosine of the solar zenith angle for each latitude point
[in]latArray storing latitude values [radians] for each point

Definition at line 140 of file scale_atm_phy_rd_solarins_simple.F90.

142 use scale_atmos_solarins, only: &
143 atmos_solarins_constant
144 implicit none
145 integer, intent(in) :: Np !< Number of points
146 real(RP), intent(out) :: solins(Np) !< Solar insolation [W/m2] for each latitude point
147 real(RP), intent(out) :: cosSZA(Np) !< Cosine of the solar zenith angle for each latitude point
148 real(RP), intent(in) :: lat(Np) !< Array storing latitude values [radians] for each point
149 !------------------------------------------------------------------------------
150
151 select case (solarins_type_id)
152 case (solarins_simple_type_id_const)
153 solins(:) = const_flux
154 cossza(:) = undef
155 case (solarins_simple_type_id_annual_mean)
156 call annual_mean_insol( solins, & ! (out)
157 lat, np ) ! (in)
158 cossza(:) = undef
159 case (solarins_simple_type_id_frierson2006)
160 solins(:) = 0.25_rp * atmos_solarins_constant &
161 * ( 1.0_rp + 0.25_rp * frierson2006_delta_s * ( 1.0_rp - 3.0_rp * sin(lat(:))**2 ) )
162 cossza(:) = undef
163 end select
164 return