43 logical,
allocatable,
private :: is_OCN(:,:)
60 character(len=*),
intent(in) :: ocean_type
62 character(len=H_LONG) :: ocean_phy_file_basename =
'' 63 logical :: ocean_phy_file_enable_periodic_year = .false.
64 logical :: ocean_phy_file_enable_periodic_month = .false.
65 logical :: ocean_phy_file_enable_periodic_day = .false.
66 integer :: ocean_phy_file_step_fixed = 0
67 real(RP) :: ocean_phy_file_offset = 0.0_rp
68 real(RP) :: ocean_phy_file_defval
69 logical :: ocean_phy_file_check_coordinates = .true.
70 integer :: ocean_phy_file_step_limit = 0
72 namelist / param_ocean_phy_file / &
73 ocean_phy_file_basename, &
74 ocean_phy_file_enable_periodic_year, &
75 ocean_phy_file_enable_periodic_month, &
76 ocean_phy_file_enable_periodic_day, &
77 ocean_phy_file_step_fixed, &
78 ocean_phy_file_offset, &
79 ocean_phy_file_defval, &
80 ocean_phy_file_check_coordinates, &
81 ocean_phy_file_step_limit
88 if(
io_l )
write(
io_fid_log,*)
'++++++ Module[FILE] / Categ[OCEAN PHY] / Origin[SCALElib]' 90 if ( ocean_type /=
'FILE' )
then 91 write(*,*)
'xxx wrong OCEAN_TYPE. Check!' 95 ocean_phy_file_defval = undef
99 read(
io_fid_conf,nml=param_ocean_phy_file,iostat=ierr)
101 if(
io_l )
write(
io_fid_log,*)
'*** Not found namelist. Default used.' 102 elseif( ierr > 0 )
then 103 write(*,*)
'xxx Not appropriate names in namelist PARAM_OCEAN_PHY_FILE. Check!' 108 if ( ocean_phy_file_basename ==
'' )
then 109 write(*,*)
'xxx OCEAN_PHY_FILE_basename is necessary' 116 ocean_phy_file_enable_periodic_year, &
117 ocean_phy_file_enable_periodic_month, &
118 ocean_phy_file_enable_periodic_day, &
119 ocean_phy_file_step_fixed, &
120 ocean_phy_file_offset, &
121 ocean_phy_file_defval, &
122 ocean_phy_file_check_coordinates, &
123 ocean_phy_file_step_limit )
126 allocate( is_ocn(
ia,
ja) )
133 is_ocn(i,j) = .false.
159 real(RP),
intent(out) :: ocean_temp_t (
ia,
ja)
160 real(RP),
intent(in) :: ocean_temp (
ia,
ja)
161 real(RP),
intent(in) :: ocean_sflx_wh (
ia,
ja)
162 real(RP),
intent(in) :: ocean_sflx_prec(
ia,
ja)
163 real(RP),
intent(in) :: ocean_sflx_evap(
ia,
ja)
164 real(DP),
intent(in) :: dt
166 real(RP) :: ocean_temp_new(
ia,
ja)
181 write(*,*)
'xxx Requested data is not found!' 187 if( is_ocn(i,j) )
then 188 ocean_temp_t(i,j) = ( ocean_temp_new(i,j) - ocean_temp(i,j) ) / dt
190 ocean_temp_t(i,j) = 0.0_rp
integer, public is
start point of inner domain: x, local
integer, public je
end point of inner domain: y, local
subroutine, public prc_mpistop
Abort MPI.
logical, public io_l
output log or not? (this process)
real(dp), public time_nowdaysec
second of current time [sec]
real(rp), public const_undef
logical, public io_nml
output log or not? (for namelist, this process)
integer, public ia
of whole cells: x, local, with HALO
real(rp), dimension(:,:), allocatable, public landuse_fact_ocean
ocean factor
integer, public js
start point of inner domain: y, local
subroutine, public ocean_phy_file(OCEAN_TEMP_t, OCEAN_TEMP, OCEAN_SFLX_WH, OCEAN_SFLX_prec, OCEAN_SFLX_evap, dt)
Slab ocean model.
module OCEAN / Physics File
integer, public ie
end point of inner domain: x, local
integer, public io_fid_conf
Config file ID.
integer, public io_fid_log
Log file ID.
integer, public io_fid_nml
Log file ID (only for output namelist)
subroutine, public ocean_phy_file_setup(OCEAN_TYPE)
Setup.
integer, public ja
of whole cells: y, local, with HALO