SCALE-RM
Functions/Subroutines | Variables
scale_ocean_phy_ice_simple Module Reference

module ocean / physics / ice / simple More...

Functions/Subroutines

subroutine, public ocean_phy_ice_setup
 
subroutine, public ocean_phy_ice_fraction (OIA, OIS, OIE, OJA, OJS, OJE, ICE_MASS, ICE_FRAC)
 
subroutine, public ocean_phy_ice_adjustment (OIA, OIS, OIE, OJA, OJS, OJE, calc_flag, OCEAN_DEPTH, OCEAN_TEMP, ICE_TEMP, ICE_MASS, MASS_FLUX, ENGI_FLUX, MASS_SUPL, ENGI_SUPL)
 
subroutine, public ocean_phy_ice_simple (OIA, OIS, OIE, OJA, OJS, OJE, iflx_water, iflx_hbalance, subsfc_temp, TC_dz, ICE_TEMP, ICE_MASS, ICE_FRAC, calc_flag, dt, ICE_TEMP_t, ICE_MASS_t, sflx_G, sflx_water, sflx_RHOE)
 Slab ocean model. More...
 

Variables

real(rp), public ocean_phy_ice_freezetemp = 271.35_RP
 
real(rp), public ocean_phy_ice_density = 1000.0_RP
 

Detailed Description

module ocean / physics / ice / simple

Description
ocean common module
Author
Team SCALE
NAMELIST
  • PARAM_OCEAN_PHY_ICE
    nametypedefault valuecomment
    OCEAN_PHY_ICE_DENSITY real(RP) 1000.0_RP density of sea ice [kg/m3]
    OCEAN_PHY_ICE_MASS_CRITICAL real(RP) 1600.0_RP ice amount for fraction = 1 [kg/m2]
    OCEAN_PHY_ICE_MASS_LIMIT real(RP) 50000.0_RP maximum ice amount [kg/m2]
    OCEAN_PHY_ICE_FRACTION_LIMIT real(RP) 1.0_RP maximum ice fraction [1]
    OCEAN_PHY_ICE_DT_MAX real(RP) 5.E-2_RP maximum delta ice temperature [K/s]

History Output
No history output

Function/Subroutine Documentation

◆ ocean_phy_ice_setup()

subroutine, public scale_ocean_phy_ice_simple::ocean_phy_ice_setup

Definition at line 60 of file scale_ocean_phy_ice_simple.F90.

60  use scale_prc, only: &
61  prc_abort
62  use scale_const, only: &
63  undef => const_undef
64  use scale_calendar, only: &
66  use scale_file_external_input, only: &
68  implicit none
69 
70  real(DP) :: OCEAN_PHY_ICE_nudging_tau = 0.0_dp ! Relaxation time
71  character(len=H_SHORT) :: OCEAN_PHY_ICE_nudging_tau_unit = "SEC"
72  character(len=H_LONG) :: OCEAN_PHY_ICE_nudging_basename = ''
73  logical :: OCEAN_PHY_ICE_nudging_basename_add_num = .false.
74  integer :: OCEAN_PHY_ICE_nudging_number_of_files = 1
75  logical :: OCEAN_PHY_ICE_nudging_enable_periodic_year = .false.
76  logical :: OCEAN_PHY_ICE_nudging_enable_periodic_month = .false.
77  logical :: OCEAN_PHY_ICE_nudging_enable_periodic_day = .false.
78  integer :: OCEAN_PHY_ICE_nudging_step_fixed = 0
79  real(RP) :: OCEAN_PHY_ICE_nudging_offset = 0.0_rp
80  real(RP) :: OCEAN_PHY_ICE_nudging_defval != UNDEF
81  logical :: OCEAN_PHY_ICE_nudging_check_coordinates = .true.
82  integer :: OCEAN_PHY_ICE_nudging_step_limit = 0
83 
84  namelist / param_ocean_phy_ice / &
85  ocean_phy_ice_density, &
86  ocean_phy_ice_mass_critical, &
87  ocean_phy_ice_mass_limit, &
88  ocean_phy_ice_fraction_limit, &
89  ocean_phy_ice_dt_max!, &
90 ! OCEAN_PHY_ICE_nudging, &
91 ! OCEAN_PHY_ICE_nudging_tau, &
92 ! OCEAN_PHY_ICE_nudging_tau_unit, &
93 ! OCEAN_PHY_ICE_nudging_basename, &
94 ! OCEAN_PHY_ICE_nudging_basename_add_num, &
95 ! OCEAN_PHY_ICE_nudging_number_of_files, &
96 ! OCEAN_PHY_ICE_nudging_enable_periodic_year, &
97 ! OCEAN_PHY_ICE_nudging_enable_periodic_month, &
98 ! OCEAN_PHY_ICE_nudging_enable_periodic_day, &
99 ! OCEAN_PHY_ICE_nudging_step_fixed, &
100 ! OCEAN_PHY_ICE_nudging_offset, &
101 ! OCEAN_PHY_ICE_nudging_defval, &
102 ! OCEAN_PHY_ICE_nudging_check_coordinates, &
103 ! OCEAN_PHY_ICE_nudging_step_limit
104 
105  integer :: ierr
106  !---------------------------------------------------------------------------
107 
108  log_newline
109  log_info("OCEAN_PHY_ICE_setup",*) 'Setup'
110 
111  ocean_phy_ice_nudging_defval = undef
112 
113  !--- read namelist
114  rewind(io_fid_conf)
115  read(io_fid_conf,nml=param_ocean_phy_ice,iostat=ierr)
116  if( ierr < 0 ) then !--- missing
117  log_info("OCEAN_PHY_ICE_setup",*) 'Not found namelist. Default used.'
118  elseif( ierr > 0 ) then !--- fatal error
119  log_error("OCEAN_PHY_ICE_setup",*) 'Not appropriate names in namelist PARAM_OCEAN_PHY_ICE. Check!'
120  call prc_abort
121  endif
122  log_nml(param_ocean_phy_ice)
123 
124  log_newline
125  log_info("OCEAN_PHY_ICE_setup",*) 'Ice amount for frac. = 1 [kg/m2] : ', ocean_phy_ice_mass_critical
126  if ( ocean_phy_ice_nudging ) then
127  call calendar_unit2sec( ocean_phy_ice_nudging_tausec, ocean_phy_ice_nudging_tau, ocean_phy_ice_nudging_tau_unit )
128 
129  log_info("OCEAN_PHY_ICE_setup",*) 'Use nudging for sea ice fraction : ON'
130  log_info("OCEAN_PHY_ICE_setup",*) 'Relaxation time Tau [sec] : ', ocean_phy_ice_nudging_tausec
131 
132  if ( ocean_phy_ice_nudging_tausec == 0.0_rp ) then
133  ocean_phy_ice_offline_mode = .true.
134  log_info("OCEAN_PHY_ICE_setup",*) 'Tau=0 means that sea ice is completely replaced by the external data.'
135  endif
136 
137  if ( ocean_phy_ice_nudging_basename == '' ) then
138  log_error("OCEAN_PHY_ICE_setup",*) 'OCEAN_PHY_ICE_nudging_basename is necessary. STOP'
139  call prc_abort
140  endif
141  else
142  log_info("OCEAN_PHY_ICE_setup",*) 'Use nudging for sea ice fraction : OFF'
143  endif
144 
145  if ( ocean_phy_ice_nudging ) then
146  call file_external_input_regist( ocean_phy_ice_nudging_basename, & ! [IN]
147  ocean_phy_ice_nudging_basename_add_num, & ! [IN]
148  ocean_phy_ice_nudging_number_of_files, & ! [IN]
149  'OCEAN_ICE_FRAC', & ! [IN]
150  'XY', & ! [IN]
151  ocean_phy_ice_nudging_enable_periodic_year, & ! [IN]
152  ocean_phy_ice_nudging_enable_periodic_month, & ! [IN]
153  ocean_phy_ice_nudging_enable_periodic_day, & ! [IN]
154  ocean_phy_ice_nudging_step_fixed, & ! [IN]
155  ocean_phy_ice_nudging_offset, & ! [IN]
156  ocean_phy_ice_nudging_defval, & ! [IN]
157  check_coordinates = ocean_phy_ice_nudging_check_coordinates, & ! [IN]
158  step_limit = ocean_phy_ice_nudging_step_limit ) ! [IN]
159  endif
160 
161  return

References scale_calendar::calendar_unit2sec(), scale_const::const_undef, scale_file_external_input::file_external_input_regist(), scale_io::io_fid_conf, ocean_phy_ice_density, and scale_prc::prc_abort().

Referenced by mod_ocean_driver::ocean_driver_setup().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ocean_phy_ice_fraction()

subroutine, public scale_ocean_phy_ice_simple::ocean_phy_ice_fraction ( integer, intent(in)  OIA,
integer, intent(in)  OIS,
integer, intent(in)  OIE,
integer, intent(in)  OJA,
integer, intent(in)  OJS,
integer, intent(in)  OJE,
real(rp), dimension(oia,oja), intent(in)  ICE_MASS,
real(rp), dimension(oia,oja), intent(out)  ICE_FRAC 
)

Definition at line 170 of file scale_ocean_phy_ice_simple.F90.

170  implicit none
171 
172  integer, intent(in) :: OIA, OIS, OIE
173  integer, intent(in) :: OJA, OJS, OJE
174  real(RP), intent(in) :: ICE_MASS(OIA,OJA) ! sea ice amount [kg/m2]
175  real(RP), intent(out) :: ICE_FRAC(OIA,OJA) ! sea ice area fraction [1]
176 
177  integer :: i, j
178  !---------------------------------------------------------------------------
179 
180  do j = ojs, oje
181  do i = ois, oie
182  ice_frac(i,j) = ice_mass(i,j) / ocean_phy_ice_mass_critical
183 
184  ice_frac(i,j) = min( sqrt( max( ice_frac(i,j), 0.0_rp ) ), ocean_phy_ice_fraction_limit )
185  enddo
186  enddo
187 
188  return

Referenced by mod_ocean_driver::ocean_driver_update(), and mod_ocean_vars::ocean_vars_restart_read().

Here is the caller graph for this function:

◆ ocean_phy_ice_adjustment()

subroutine, public scale_ocean_phy_ice_simple::ocean_phy_ice_adjustment ( integer, intent(in)  OIA,
integer, intent(in)  OIS,
integer, intent(in)  OIE,
integer, intent(in)  OJA,
integer, intent(in)  OJS,
integer, intent(in)  OJE,
logical, dimension (oia,oja), intent(in)  calc_flag,
real(rp), intent(in)  OCEAN_DEPTH,
real(rp), dimension(oia,oja), intent(inout)  OCEAN_TEMP,
real(rp), dimension (oia,oja), intent(inout)  ICE_TEMP,
real(rp), dimension (oia,oja), intent(inout)  ICE_MASS,
real(rp), dimension(oia,oja), intent(out)  MASS_FLUX,
real(rp), dimension(oia,oja), intent(out)  ENGI_FLUX,
real(rp), dimension (oia,oja), intent(out)  MASS_SUPL,
real(rp), dimension (oia,oja), intent(out)  ENGI_SUPL 
)

Definition at line 204 of file scale_ocean_phy_ice_simple.F90.

204  use scale_const, only: &
205  dwatr => const_dwatr
206  use scale_atmos_hydrometeor, only: &
207  cv_water, &
208  cv_ice, &
209  lhf
210  implicit none
211 
212  integer, intent(in) :: OIA, OIS, OIE
213  integer, intent(in) :: OJA, OJS, OJE
214  logical, intent(in) :: calc_flag (OIA,OJA) ! to decide calculate or not
215  real(RP), intent(in) :: OCEAN_DEPTH ! depth of the first layer of the ocean
216  real(RP), intent(inout) :: OCEAN_TEMP(OIA,OJA) ! ocean temperature [K]
217  real(RP), intent(inout) :: ICE_TEMP (OIA,OJA) ! sea ice temperature [K]
218  real(RP), intent(inout) :: ICE_MASS (OIA,OJA) ! sea ice amount [kg/m2]
219  real(RP), intent(out) :: MASS_FLUX(OIA,OJA)
220  real(RP), intent(out) :: ENGI_FLUX(OIA,OJA)
221  real(RP), intent(out) :: MASS_SUPL (OIA,OJA)
222  real(RP), intent(out) :: ENGI_SUPL (OIA,OJA)
223 
224  real(RP) :: C_w
225  real(RP) :: ICE_MASS_frz
226  real(RP) :: ICE_MASS_prev
227 
228  integer :: i, j
229  !---------------------------------------------------------------------------
230 
231  c_w = cv_water * dwatr * ocean_depth
232 
233  !$omp parallel do &
234  !$omp private(ICE_MASS_frz,ICE_MASS_prev)
235  do j = ojs, oje
236  do i = ois, oie
237  if ( calc_flag(i,j) &
238  .and. ocean_temp(i,j) < ocean_phy_ice_freezetemp .and. ice_mass(i,j) < ocean_phy_ice_mass_limit ) then
239  ice_mass_frz = c_w * ( ocean_phy_ice_freezetemp - ocean_temp(i,j) ) &
241  ice_mass_frz = min( ice_mass_frz, dwatr * ocean_depth )
242 
243  ! update ice mass
244  ice_mass_prev = ice_mass(i,j)
245  ice_mass(i,j) = ice_mass(i,j) + ice_mass_frz
246  ice_mass(i,j) = min( ice_mass(i,j), ocean_phy_ice_mass_limit ) ! apply limiter
247  ice_mass_frz = ice_mass(i,j) - ice_mass_prev
248 
249  ! update ice temperature
250  ice_temp(i,j) = ice_temp(i,j) &
251  + ( ocean_phy_ice_freezetemp - ice_temp(i,j) ) * ice_mass_frz / ice_mass(i,j)
252 
253  ! update ocean temperature
254  ocean_temp(i,j) = ocean_temp(i,j) &
255  + ( cv_water * ocean_temp(i,j) - cv_ice * ocean_phy_ice_freezetemp + lhf ) * ice_mass_frz &
256  / ( c_w - cv_water * ice_mass_frz )
257 
258  mass_flux(i,j) = ice_mass_frz
259  engi_flux(i,j) = ( cv_ice * ocean_phy_ice_freezetemp - lhf ) * ice_mass_frz
260  mass_supl(i,j) = ice_mass_frz
261  engi_supl(i,j) = ice_mass_frz * cv_water * ocean_temp(i,j)
262  else
263  mass_flux(i,j) = 0.0_rp
264  engi_flux(i,j) = 0.0_rp
265  mass_supl(i,j) = 0.0_rp
266  engi_supl(i,j) = 0.0_rp
267  endif
268  enddo
269  enddo
270 
271  return

References scale_const::const_dwatr, scale_atmos_hydrometeor::cv_ice, scale_atmos_hydrometeor::cv_water, scale_atmos_hydrometeor::lhf, and ocean_phy_ice_freezetemp.

Referenced by mod_ocean_driver::ocean_driver_update().

Here is the caller graph for this function:

◆ ocean_phy_ice_simple()

subroutine, public scale_ocean_phy_ice_simple::ocean_phy_ice_simple ( integer, intent(in)  OIA,
integer, intent(in)  OIS,
integer, intent(in)  OIE,
integer, intent(in)  OJA,
integer, intent(in)  OJS,
integer, intent(in)  OJE,
real(rp), dimension (oia,oja), intent(in)  iflx_water,
real(rp), dimension(oia,oja), intent(in)  iflx_hbalance,
real(rp), dimension (oia,oja), intent(in)  subsfc_temp,
real(rp), dimension (oia,oja), intent(in)  TC_dz,
real(rp), dimension (oia,oja), intent(in)  ICE_TEMP,
real(rp), dimension (oia,oja), intent(in)  ICE_MASS,
real(rp), dimension (oia,oja), intent(in)  ICE_FRAC,
logical, dimension (oia,oja), intent(in)  calc_flag,
real(dp), intent(in)  dt,
real(rp), dimension (oia,oja), intent(out)  ICE_TEMP_t,
real(rp), dimension (oia,oja), intent(out)  ICE_MASS_t,
real(rp), dimension (oia,oja), intent(out)  sflx_G,
real(rp), dimension (oia,oja), intent(out)  sflx_water,
real(rp), dimension (oia,oja), intent(out)  sflx_RHOE 
)

Slab ocean model.

Definition at line 293 of file scale_ocean_phy_ice_simple.F90.

293  use scale_prc, only: &
294  prc_abort
295  use scale_atmos_hydrometeor, only: &
296  cv_water, &
297  cv_ice, &
298  lhf
299  use scale_file_external_input, only: &
300  file_external_input_update
301  implicit none
302 
303  integer, intent(in) :: OIA, OIS, OIE
304  integer, intent(in) :: OJA, OJS, OJE
305  real(RP), intent(in) :: iflx_water (OIA,OJA) ! input mass flux [kg/m2/s] (downward)
306  real(RP), intent(in) :: iflx_hbalance(OIA,OJA) ! input heat flux [J/m2/s] (downward)
307  real(RP), intent(in) :: subsfc_temp (OIA,OJA) ! subsurface temperature [K]
308  real(RP), intent(in) :: TC_dz (OIA,OJA) ! Thermal conductance [K/m]
309  real(RP), intent(in) :: ICE_TEMP (OIA,OJA) ! sea ice temperature [K]
310  real(RP), intent(in) :: ICE_MASS (OIA,OJA) ! sea ice amount [kg/m2]
311  real(RP), intent(in) :: ICE_FRAC (OIA,OJA) ! sea ice fraction [0-1]
312  logical, intent(in) :: calc_flag (OIA,OJA) ! to decide calculate or not
313  real(DP), intent(in) :: dt
314  real(RP), intent(out) :: ICE_TEMP_t (OIA,OJA) ! tendency of sea ice temperature [K/s]
315  real(RP), intent(out) :: ICE_MASS_t (OIA,OJA) ! tendency of sea ice amount [kg/m2/s]
316  real(RP), intent(out) :: SFLX_G (OIA,OJA) ! heat flux from sea ice to subsurface
317  real(RP), intent(out) :: SFLX_water (OIA,OJA) ! mass flux from sea ice to subsurface
318  real(RP), intent(out) :: SFLX_RHOE (OIA,OJA) ! internal energy flux from sea ice to subsurface
319 
320  real(RP) :: ICE_MASS_new ! [kg/m2]
321  real(RP) :: ICE_TEMP_new ! [K]
322  real(RP) :: mass_budget ! [kg/m2/s]
323  real(RP) :: heat_budget ! [J/m2/s]
324  real(RP) :: G ! [J/m2/s]
325  real(RP) :: dM ! [kg/m2]
326  real(RP) :: dE ! [J/m2]
327  real(RP) :: M_mlt ! [kg/m2]
328  real(RP) :: dt_RP
329 
330  integer :: i, j
331  !---------------------------------------------------------------------------
332 
333  log_progress(*) 'ocean / physics / seaice'
334 
335  dt_rp = real(dt,kind=rp)
336 
337  !$omp parallel do &
338  !$omp private(mass_budget,heat_budget,dM,dE,G,M_mlt, &
339  !$omp ICE_TEMP_new,ICE_MASS_new)
340  do j = ojs, oje
341  do i = ois, oie
342  if ( calc_flag(i,j) ) then
343 
344  ! mass change
345  dm = iflx_water(i,j) * ice_frac(i,j) * dt_rp
346  ice_mass_new = ice_mass(i,j) + dm
347 
348  if ( ice_mass_new > 0.0_rp ) then
349  ! internal energy change
350  g = ( subsfc_temp(i,j) - ice_temp(i,j) ) * tc_dz(i,j) ! heat flux from ocean
351  de = ( iflx_hbalance(i,j) + g ) * ice_frac(i,j) * dt_rp
352  ice_temp_new = ice_temp(i,j) &
353  + ( de - ( cv_ice * ice_temp(i,j) - lhf ) * dm ) / ( cv_ice * ice_mass_new )
354 
355  ! melting ice
356  m_mlt = cv_ice * ( ice_temp_new - ocean_phy_ice_freezetemp ) * ice_mass_new &
358  m_mlt = min( max( m_mlt, 0.0_rp ), ice_mass_new )
359 
360  ice_mass_new = ice_mass_new - m_mlt
361  ice_temp_new = ice_temp_new &
362  + ( cv_ice * ice_temp_new - lhf - cv_water * ocean_phy_ice_freezetemp ) * m_mlt &
363  / ( cv_ice * ice_mass_new )
364 
365  ! ice to ocean flux
366  mass_budget = m_mlt / dt_rp
367  sflx_rhoe(i,j) = cv_water * ocean_phy_ice_freezetemp * mass_budget
368  sflx_g(i,j) = - g * ice_frac(i,j)
369  sflx_water(i,j) = mass_budget
370 
371  else
372 
373  ice_mass_new = 0.0_rp
374  ice_temp_new = ocean_phy_ice_freezetemp ! dummy
375 
376  sflx_rhoe(i,j) = cv_water * subsfc_temp(i,j) * ice_mass_new / dt_rp
377  sflx_g(i,j) = ( cv_ice * ice_temp(i,j) - lhf ) * ice_mass(i,j) &
378  - sflx_rhoe(i,j) + iflx_hbalance(i,j) * ice_frac(i,j)
379  sflx_water(i,j) = ice_mass_new ! (negative)
380 
381  endif
382 
383  ice_mass_t(i,j) = ( ice_mass_new - ice_mass(i,j) ) / dt_rp
384  ice_temp_t(i,j) = ( ice_temp_new - ice_temp(i,j) ) / dt_rp
385 
386  else
387  sflx_g(i,j) = 0.0_rp
388  sflx_water(i,j) = 0.0_rp
389  sflx_rhoe(i,j) = 0.0_rp
390  ice_mass_t(i,j) = 0.0_rp
391  ice_temp_t(i,j) = 0.0_rp
392  endif
393  enddo
394  enddo
395 
396  return

References scale_atmos_hydrometeor::cv_ice, scale_atmos_hydrometeor::cv_water, scale_atmos_hydrometeor::lhf, ocean_phy_ice_freezetemp, scale_prc::prc_abort(), and scale_precision::rp.

Referenced by mod_ocean_driver::ocean_driver_calc_tendency().

Here is the call graph for this function:
Here is the caller graph for this function:

Variable Documentation

◆ ocean_phy_ice_freezetemp

real(rp), public scale_ocean_phy_ice_simple::ocean_phy_ice_freezetemp = 271.35_RP

Definition at line 44 of file scale_ocean_phy_ice_simple.F90.

44  real(RP), public :: OCEAN_PHY_ICE_freezetemp = 271.35_rp ! freezing temperature of sea ice [K]

Referenced by ocean_phy_ice_adjustment(), ocean_phy_ice_simple(), mod_ocean_vars::ocean_vars_restart_read(), and mod_realinput::realinput_surface().

◆ ocean_phy_ice_density

real(rp), public scale_ocean_phy_ice_simple::ocean_phy_ice_density = 1000.0_RP

Definition at line 45 of file scale_ocean_phy_ice_simple.F90.

45  real(RP), public :: OCEAN_PHY_ICE_density = 1000.0_rp ! density of sea ice [kg/m3]

Referenced by ocean_phy_ice_setup(), and scale_ocean_phy_tc::ocean_phy_tc_seaice().

scale_prc::prc_abort
subroutine, public prc_abort
Abort Process.
Definition: scale_prc.F90:342
scale_file_external_input::file_external_input_regist
subroutine, public file_external_input_regist(basename, basename_add_num, number_of_files, varname, axistype, enable_periodic_year, enable_periodic_month, enable_periodic_day, step_fixed, offset, defval, check_coordinates, aggregate, allow_missing, step_limit, exist)
Regist data.
Definition: scale_file_external_input.F90:324
scale_atmos_hydrometeor
module atmosphere / hydrometeor
Definition: scale_atmos_hydrometeor.F90:12
scale_calendar
module CALENDAR
Definition: scale_calendar.F90:13
scale_prc
module PROCESS
Definition: scale_prc.F90:11
scale_const
module CONSTANT
Definition: scale_const.F90:11
scale_ocean_phy_ice_simple::ocean_phy_ice_freezetemp
real(rp), public ocean_phy_ice_freezetemp
Definition: scale_ocean_phy_ice_simple.F90:44
scale_atmos_hydrometeor::lhf
real(rp), public lhf
latent heat of fusion for use [J/kg]
Definition: scale_atmos_hydrometeor.F90:128
scale_file_external_input
module file / external_input
Definition: scale_file_external_input.F90:12
scale_atmos_hydrometeor::cv_water
real(rp), public cv_water
CV for water [J/kg/K].
Definition: scale_atmos_hydrometeor.F90:132
scale_atmos_hydrometeor::cv_ice
real(rp), public cv_ice
CV for ice [J/kg/K].
Definition: scale_atmos_hydrometeor.F90:134
scale_calendar::calendar_unit2sec
subroutine, public calendar_unit2sec(second, value, unit)
Convert several units to second.
Definition: scale_calendar.F90:424