56 character(len=H_LONG) :: ocean_dyn_offline_basename =
''
57 logical :: ocean_dyn_offline_basename_add_num = .false.
58 integer :: ocean_dyn_offline_number_of_files = 1
59 logical :: ocean_dyn_offline_enable_periodic_year = .false.
60 logical :: ocean_dyn_offline_enable_periodic_month = .false.
61 logical :: ocean_dyn_offline_enable_periodic_day = .false.
62 integer :: ocean_dyn_offline_step_fixed = 0
63 real(
rp) :: ocean_dyn_offline_offset = 0.0_rp
64 real(
rp) :: ocean_dyn_offline_defval
65 logical :: ocean_dyn_offline_check_coordinates = .true.
66 integer :: ocean_dyn_offline_step_limit = 0
68 namelist / param_ocean_dyn_offline / &
69 ocean_dyn_offline_basename, &
70 ocean_dyn_offline_basename_add_num, &
71 ocean_dyn_offline_number_of_files, &
72 ocean_dyn_offline_enable_periodic_year, &
73 ocean_dyn_offline_enable_periodic_month, &
74 ocean_dyn_offline_enable_periodic_day, &
75 ocean_dyn_offline_step_fixed, &
76 ocean_dyn_offline_offset, &
77 ocean_dyn_offline_defval, &
78 ocean_dyn_offline_check_coordinates, &
79 ocean_dyn_offline_step_limit
85 log_info(
"OCEAN_DYN_OFFLINE_setup",*)
'Setup'
87 ocean_dyn_offline_defval = undef
91 read(
io_fid_conf,nml=param_ocean_dyn_offline,iostat=ierr)
93 log_info(
"OCEAN_DYN_OFFLINE_setup",*)
'Not found namelist. Default used.'
94 elseif( ierr > 0 )
then
95 log_error(
"OCEAN_DYN_OFFLINE_setup",*)
'Not appropriate names in namelist PARAM_OCEAN_DYN_OFFLINE. Check!'
98 log_nml(param_ocean_dyn_offline)
100 log_info(
"OCEAN_DYN_OFFLINE_setup",*)
'Use offline ocean'
102 if ( ocean_dyn_offline_basename ==
'' )
then
103 log_error(
"OCEAN_DYN_OFFLINE_setup",*)
'OCEAN_DYN_OFFLINE_basename is necessary !!'
108 ocean_dyn_offline_basename_add_num, &
109 ocean_dyn_offline_number_of_files, &
112 ocean_dyn_offline_enable_periodic_year, &
113 ocean_dyn_offline_enable_periodic_month, &
114 ocean_dyn_offline_enable_periodic_day, &
115 ocean_dyn_offline_step_fixed, &
116 ocean_dyn_offline_offset, &
117 ocean_dyn_offline_defval, &
118 check_coordinates = ocean_dyn_offline_check_coordinates, &
119 step_limit = ocean_dyn_offline_step_limit )
136 file_external_input_update
139 integer,
intent(in) :: okmax, oks, oke
140 integer,
intent(in) :: oia, ois, oie
141 integer,
intent(in) :: oja, ojs, oje
142 logical,
intent(in) :: calc_flag (oia,oja)
143 real(
dp),
intent(in) :: dt
144 real(
dp),
intent(in) :: nowdaysec
145 real(
rp),
intent(inout) :: ocean_temp(okmax,oia,oja)
147 real(
rp) :: ocean_temp_ref(okmax,oia,oja)
153 log_progress(*)
'ocean / dynamics / offline'
155 call file_external_input_update(
'OCEAN_TEMP', nowdaysec, ocean_temp_ref(:,:,:), error )
158 log_error(
"OCEAN_DYN_OFFLINE",*)
'Requested data is not found!'
164 if ( calc_flag(i,j) )
then
165 ocean_temp(oks,i,j) = ocean_temp_ref(oks,i,j)