Changeset 2472
- Timestamp:
- 2010-12-13T15:15:02+01:00 (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/LIM_SRC_3/limdia.F90
r2312 r2472 2 2 !!====================================================================== 3 3 !! *** MODULE limdia *** 4 !! 4 !! LIM-3 sea ice model : diagnostics of ice model 5 5 !!====================================================================== 6 !! To add a new field 7 !! 1) in lim_dia : add its definition for both hemispheres if wished 8 !! 2) add the new titles in lim_dia_init 6 !! History : 3.2 ! 2007-01 (M. Vancoppenolle) Code adapted from LIM-2 7 !! - ! 2008-03 (M. Vancoppenolle) add lim_dia_init 9 8 !!---------------------------------------------------------------------- 10 9 #if defined key_lim3 11 10 !!---------------------------------------------------------------------- 12 !! 'key_lim3' :LIM3 sea-ice model13 !!---------------------------------------------------------------------- 14 !! lim_dia : computation of the time evolution of keys var.15 !! lim_dia_init : initialization and namelist read11 !! 'key_lim3' LIM3 sea-ice model 12 !!---------------------------------------------------------------------- 13 !! lim_dia : computation and output of the time evolution of keys variables 14 !! lim_dia_init : initialization and namelist read 16 15 !!---------------------------------------------------------------------- 17 16 !! * Modules used … … 30 29 USE lib_mpp 31 30 USE in_out_manager 32 31 33 32 IMPLICIT NONE 34 33 PRIVATE 35 34 36 !! * Routine accessibility37 35 PUBLIC lim_dia ! called by ice_step 38 36 39 !! * Shared module variables 40 INTEGER, PUBLIC :: & 41 ntmoy = 1 , & !: instantaneous values of ice evolution or averaging ntmoy 42 ninfo = 1 !: frequency of ouputs on file ice_evolu in case of averaging 43 44 !! * Module variables 45 INTEGER, PARAMETER :: & ! Parameters for outputs to files "evolu" 46 jpinfmx = 100 , & ! maximum number of key variables 47 jpchinf = 5 , & ! ??? 48 jpchsep = jpchinf + 2 ! ??? 49 50 INTEGER :: & 51 nfrinf = 4 , & ! number of variables written in one line 52 nferme , & ! last time step at which the var. are written on file 53 nvinfo , & ! number of total variables 54 nbvt , & ! number of time variables 55 naveg ! number of step for accumulation before averaging 56 57 CHARACTER(len=8) :: & 58 fmtinf = '1PE13.5 ' ! format of the output values 59 60 CHARACTER(len=30) :: & 61 fmtw , & ! formats 62 fmtr , & ! ??? 63 fmtitr ! ??? 64 65 CHARACTER(len=jpchsep), DIMENSION(jpinfmx) :: & 66 titvar ! title of key variables 67 68 REAL(wp), DIMENSION(jpinfmx) :: & 69 vinfom ! temporary working space 70 REAL(wp) :: & 71 epsi06 = 1.e-06 72 REAL(wp), DIMENSION(jpi,jpj) :: & 73 aire ! masked grid cell area 37 INTEGER, PUBLIC :: ntmoy = 1 !: instantaneous values of ice evolution or averaging ntmoy 38 INTEGER, PUBLIC :: ninfo = 1 !: frequency of ouputs on file ice_evolu in case of averaging 39 40 ! !!! Parameters for outputs to files "evolu" 41 INTEGER, PARAMETER :: jpinfmx = 100 ! maximum number of key variables 42 INTEGER, PARAMETER :: jpchinf = 5 ! ??? 43 INTEGER, PARAMETER :: jpchsep = jpchinf + 2 ! ??? 44 45 INTEGER :: nfrinf = 4 ! number of variables written in one line 46 INTEGER :: nferme ! last time step at which the var. are written on file 47 INTEGER :: nvinfo ! number of total variables 48 INTEGER :: nbvt ! number of time variables 49 INTEGER :: naveg ! number of step for accumulation before averaging 50 REAL(wp) :: epsi06 = 1.e-6 ! small number 51 52 CHARACTER(len= 8) :: fmtinf = '1PE13.5 ' ! format of the output values 53 CHARACTER(len=30) :: fmtw ! formats 54 CHARACTER(len=30) :: fmtr ! ??? 55 CHARACTER(len=30) :: fmtitr ! ??? 56 57 CHARACTER(len=jpchsep), DIMENSION(jpinfmx) :: titvar ! title of key variables 58 59 REAL(wp), DIMENSION(jpinfmx) :: vinfom ! temporary working space 60 REAL(wp), DIMENSION(jpi,jpj) :: aire ! masked grid cell area 74 61 75 62 !! * Substitutions 76 63 # include "vectopt_loop_substitute.h90" 77 64 !!---------------------------------------------------------------------- 78 !! LIM 2.0, UCL-LOCEAN-IPSL (2005)65 !! NEMO/LIM3 3.3 , UCL - NEMO Consortium (2010) 79 66 !! $Id$ 80 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 81 !!---------------------------------------------------------------------- 82 67 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 68 !!---------------------------------------------------------------------- 83 69 CONTAINS 84 70 … … 89 75 !! ** Purpose : Computation and outputs on file ice.evolu 90 76 !! the temporal evolution of some key variables 91 !! 92 !! History : 93 !! 8.0 ! 97-06 (Louvain-La-Neuve) Original code 94 !! 8.5 ! 02-09 (C. Ethe , G. Madec ) F90: Free form and module 95 !! 9.0 ! 05-06 (M. Vancoppenolle LLN) Rehabilitation and fixing a few bugs 96 !! 01-07 (M. Vancoppenolle LLN) added new fields + fram strait 97 !! export 98 !!------------------------------------------------------------------- 99 !! * Local variables 100 INTEGER :: jv,ji,jj,jl ! dummy loop indices 101 REAL(wp), DIMENSION(jpinfmx) :: & 102 vinfor ! temporary working space 103 REAL(wp) :: & 104 zshift_date , & ! date from the minimum ice extent 105 zday, zday_min, & ! current day, day of minimum extent 106 zafy, zamy, & ! temporary area of fy and my ice 107 zindb 77 !!------------------------------------------------------------------- 78 INTEGER :: jv, ji, jj, jl ! dummy loop indices 79 REAL(wp) :: zshift_date ! date from the minimum ice extent 80 REAL(wp) :: zday, zday_min ! current day, day of minimum extent 81 REAL(wp) :: zafy, zamy ! temporary area of fy and my ice 82 REAL(wp) :: zindb 83 REAL(wp), DIMENSION(jpinfmx) :: vinfor ! temporary working space 108 84 !!------------------------------------------------------------------- 109 85 110 86 ! 0) date from the minimum of ice extent 111 87 !--------------------------------------- 112 zday_min = 273.0 ! zday_min = date of minimum extent, here September 30th 113 zday = FLOAT(numit-nit000) * rdt_ice / ( 86400.0 * FLOAT(nn_fsbc) ) 114 IF (zday.GT.zday_min) THEN 115 zshift_date = zday - zday_min 116 ELSE 117 zshift_date = zday - (365.0 - zday_min) 88 zday_min = 273. ! zday_min = date of minimum extent, here September 30th 89 zday = REAL(numit-nit000) * rdt_ice / ( 86400. * REAL(nn_fsbc) ) 90 ! 91 IF( zday > zday_min ) THEN ; zshift_date = zday - zday_min 92 ELSE ; zshift_date = zday - (365.0 - zday_min) 118 93 ENDIF 119 94 120 95 IF( numit == nstart ) CALL lim_dia_init ! initialisation of ice_evolu file 121 96 122 ! temporal diagnostics 123 vinfor(1) = REAL(numit) 97 vinfor(1) = REAL(numit) ! time diagnostics 124 98 vinfor(2) = nyear 125 99 126 ! put everything to zero 127 DO jv = nbvt + 1, nvinfo 128 vinfor(jv) = 0.0 100 DO jv = nbvt + 1, nvinfo ! put everything to zero 101 vinfor(jv) = 0. 129 102 END DO 130 103 … … 137 110 DO ji = fs_2, fs_jpim1 ! vector opt. 138 111 IF( tms(ji,jj) == 1 ) THEN 139 vinfor(3) = vinfor(3) + at_i(ji,jj)*aire(ji,jj) / 1.0e12 !ice area140 IF (at_i(ji,jj).GT.0.15) vinfor(5) = vinfor(5) + aire(ji,jj) / 1.0e12 !ice extent141 vinfor(7) = vinfor(7) + vt_i(ji,jj)*aire(ji,jj) / 1.0e12 !ice volume142 vinfor(9) = vinfor(9) + vt_s(ji,jj)*aire(ji,jj) / 1.0e12 !snow volume143 vinfor(15) = vinfor(15) + ot_i(ji,jj) *vt_i(ji,jj)*aire(ji,jj) / 1.0e12 !mean age144 vinfor(29) = vinfor(29) + smt_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) / 1.0e12 !mean salinity112 vinfor(3) = vinfor(3) + at_i(ji,jj)*aire(ji,jj) * 1.e-12 !ice area 113 IF (at_i(ji,jj).GT.0.15) vinfor(5) = vinfor(5) + aire(ji,jj) * 1.e-12 !ice extent 114 vinfor(7) = vinfor(7) + vt_i(ji,jj)*aire(ji,jj) * 1.e-12 !ice volume 115 vinfor(9) = vinfor(9) + vt_s(ji,jj)*aire(ji,jj) * 1.e-12 !snow volume 116 vinfor(15) = vinfor(15) + ot_i(ji,jj) *vt_i(ji,jj)*aire(ji,jj) * 1.e-12 !mean age 117 vinfor(29) = vinfor(29) + smt_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) * 1.e-12 !mean salinity 145 118 ! the computation of this diagnostic is not reliable 146 119 vinfor(31) = vinfor(31) + vt_i(ji,jj)*( u_ice(ji,jj)*u_ice(ji,jj) + & 147 120 v_ice(ji,jj)*v_ice(ji,jj) )*aire(ji,jj)/1.0e12 148 vinfor(53) = vinfor(53) + emps(ji,jj)*aire(ji,jj) / 1.0e12 !salt flux149 vinfor(55) = vinfor(55) + fsbri(ji,jj)*aire(ji,jj) / 1.0e12 !brine drainage flux150 vinfor(57) = vinfor(57) + fseqv(ji,jj)*aire(ji,jj) / 1.0e12 !equivalent salt flux151 vinfor(59) = vinfor(59) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) / 1.0e12 !SST152 vinfor(61) = vinfor(61) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) / 1.0e12 !SSS153 vinfor(65) = vinfor(65) + et_s(ji,jj)/1.0e9*aire(ji,jj) / 1.0e12 ! snow temperature154 vinfor(67) = vinfor(67) + et_i(ji,jj)/1.0e9*aire(ji,jj) / 1.0e12 ! ice heat content155 vinfor(69) = vinfor(69) + v_i(ji,jj,1)*aire(ji,jj) / 1.0e12 !ice volume156 vinfor(71) = vinfor(71) + v_i(ji,jj,2)*aire(ji,jj) / 1.0e12 !ice volume157 vinfor(73) = vinfor(73) + v_i(ji,jj,3)*aire(ji,jj) / 1.0e12 !ice volume158 vinfor(75) = vinfor(75) + v_i(ji,jj,4)*aire(ji,jj) / 1.0e12 !ice volume159 vinfor(77) = vinfor(77) + v_i(ji,jj,5)*aire(ji,jj) / 1.0e12 !ice volume121 vinfor(53) = vinfor(53) + emps(ji,jj)*aire(ji,jj) * 1.e-12 !salt flux 122 vinfor(55) = vinfor(55) + fsbri(ji,jj)*aire(ji,jj) * 1.e-12 !brine drainage flux 123 vinfor(57) = vinfor(57) + fseqv(ji,jj)*aire(ji,jj) * 1.e-12 !equivalent salt flux 124 vinfor(59) = vinfor(59) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) * 1.e-12 !SST 125 vinfor(61) = vinfor(61) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) * 1.e-12 !SSS 126 vinfor(65) = vinfor(65) + et_s(ji,jj)/1.0e9*aire(ji,jj) * 1.e-12 ! snow temperature 127 vinfor(67) = vinfor(67) + et_i(ji,jj)/1.0e9*aire(ji,jj) * 1.e-12 ! ice heat content 128 vinfor(69) = vinfor(69) + v_i(ji,jj,1)*aire(ji,jj) * 1.e-12 !ice volume 129 vinfor(71) = vinfor(71) + v_i(ji,jj,2)*aire(ji,jj) * 1.e-12 !ice volume 130 vinfor(73) = vinfor(73) + v_i(ji,jj,3)*aire(ji,jj) * 1.e-12 !ice volume 131 vinfor(75) = vinfor(75) + v_i(ji,jj,4)*aire(ji,jj) * 1.e-12 !ice volume 132 vinfor(77) = vinfor(77) + v_i(ji,jj,5)*aire(ji,jj) * 1.e-12 !ice volume 160 133 vinfor(79) = 0.0 161 vinfor(81) = vinfor(81) + emp(ji,jj)*aire(ji,jj) / 1.0e12 ! mass flux134 vinfor(81) = vinfor(81) + emp(ji,jj)*aire(ji,jj) * 1.e-12 ! mass flux 162 135 ENDIF 163 136 END DO … … 168 141 DO ji = fs_2, fs_jpim1 ! vector opt. 169 142 IF( tms(ji,jj) == 1 ) THEN 170 vinfor(11) = vinfor(11) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !undef def ice volume143 vinfor(11) = vinfor(11) + v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 !undef def ice volume 171 144 ENDIF 172 145 END DO … … 174 147 END DO 175 148 176 vinfor(13) = 0. 0149 vinfor(13) = 0. 177 150 178 151 vinfor(15) = vinfor(15) / MAX(vinfor(7),epsi06) ! these have to be divided by total ice volume to have the … … 198 171 DO ji = fs_2, fs_jpim1 ! vector opt. 199 172 IF( tms(ji,jj) == 1 ) THEN 200 vinfor(33) = vinfor(33) + d_v_i_trp(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume201 vinfor(35) = vinfor(35) + d_v_i_thd(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume173 vinfor(33) = vinfor(33) + d_v_i_trp(ji,jj,jl)*aire(ji,jj) * 1.e-12 !ice volume 174 vinfor(35) = vinfor(35) + d_v_i_thd(ji,jj,jl)*aire(ji,jj) * 1.e-12 !ice volume 202 175 ENDIF 203 176 END DO … … 208 181 DO ji = fs_2, fs_jpim1 ! vector opt. 209 182 IF( tms(ji,jj) == 1 ) THEN 210 vinfor(37) = vinfor(37) + diag_sni_gr(ji,jj)*aire(ji,jj) / 1.0e12 !th growth rates211 vinfor(39) = vinfor(39) + diag_lat_gr(ji,jj)*aire(ji,jj) / 1.0e12212 vinfor(41) = vinfor(41) + diag_bot_gr(ji,jj)*aire(ji,jj) / 1.0e12213 vinfor(43) = vinfor(43) + diag_dyn_gr(ji,jj)*aire(ji,jj) / 1.0e12214 vinfor(45) = vinfor(45) + dv_dt_thd(ji,jj,5)*aire(ji,jj) / 1.0e12215 vinfor(47) = vinfor(47) + v_newice(ji,jj) *aire(ji,jj) / 1.0e12 / rdt_ice ! volume acc in OW183 vinfor(37) = vinfor(37) + diag_sni_gr(ji,jj)*aire(ji,jj) * 1.e-12 !th growth rates 184 vinfor(39) = vinfor(39) + diag_lat_gr(ji,jj)*aire(ji,jj) * 1.e-12 185 vinfor(41) = vinfor(41) + diag_bot_gr(ji,jj)*aire(ji,jj) * 1.e-12 186 vinfor(43) = vinfor(43) + diag_dyn_gr(ji,jj)*aire(ji,jj) * 1.e-12 187 vinfor(45) = vinfor(45) + dv_dt_thd(ji,jj,5)*aire(ji,jj) * 1.e-12 188 vinfor(47) = vinfor(47) + v_newice(ji,jj) *aire(ji,jj) * 1.e-12 / rdt_ice ! volume acc in OW 216 189 ENDIF 217 190 END DO … … 222 195 DO ji = fs_2, fs_jpim1 ! vector opt. 223 196 IF( tms(ji,jj) == 1 ) THEN 224 vinfor(63) = vinfor(63) + t_su(ji,jj,jl)*a_i(ji,jj,jl)*aire(ji,jj) / 1.0e12197 vinfor(63) = vinfor(63) + t_su(ji,jj,jl)*a_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 225 198 ENDIF 226 199 END DO … … 238 211 DO jl = 1, jpl 239 212 IF ((o_i(ji,jj,jl) - zshift_date).LT.0.0) THEN 240 vinfor(17) = vinfor(17) + a_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 ! FY ice area241 vinfor(25) = vinfor(25) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 ! FY ice volume242 vinfor(49) = vinfor(49) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !FY ice salinity213 vinfor(17) = vinfor(17) + a_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 ! FY ice area 214 vinfor(25) = vinfor(25) + v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 ! FY ice volume 215 vinfor(49) = vinfor(49) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 !FY ice salinity 243 216 zafy = zafy + a_i(ji,jj,jl) 244 217 ENDIF 245 218 IF ((o_i(ji,jj,jl) - zshift_date).GT.0.0) THEN 246 vinfor(19) = vinfor(19) + a_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 ! MY ice area247 vinfor(27) = vinfor(27) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 ! MY ice volume248 vinfor(51) = vinfor(51) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !MY ice salinity219 vinfor(19) = vinfor(19) + a_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 ! MY ice area 220 vinfor(27) = vinfor(27) + v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 ! MY ice volume 221 vinfor(51) = vinfor(51) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 !MY ice salinity 249 222 zamy = zamy + a_i(ji,jj,jl) 250 223 ENDIF 251 224 END DO 252 225 IF ((at_i(ji,jj).GT.0.15).AND.(zafy.GT.zamy)) THEN 253 vinfor(21) = vinfor(21) + aire(ji,jj) / 1.0e12 ! Seasonal ice extent226 vinfor(21) = vinfor(21) + aire(ji,jj) * 1.e-12 ! Seasonal ice extent 254 227 ENDIF 255 228 IF ((at_i(ji,jj).GT.0.15).AND.(zafy.LE.zamy)) THEN 256 vinfor(23) = vinfor(23) + aire(ji,jj) / 1.0e12 ! Perennial ice extent229 vinfor(23) = vinfor(23) + aire(ji,jj) * 1.e-12 ! Perennial ice extent 257 230 ENDIF 258 231 ENDIF … … 274 247 DO ji = 134, 138 275 248 vinfor(83) = vinfor(83) - v_ice(ji,jj) * & 276 e1t(ji,jj)*at_i(ji,jj)*rdt_ice / 1.0e12249 e1t(ji,jj)*at_i(ji,jj)*rdt_ice * 1.e-12 277 250 vinfor(84) = vinfor(84) - v_ice(ji,jj) * & 278 e1t(ji,jj)*vt_i(ji,jj)*rdt_ice / 1.0e12251 e1t(ji,jj)*vt_i(ji,jj)*rdt_ice * 1.e-12 279 252 END DO 280 253 … … 287 260 DO ji = fs_2, fs_jpim1 ! vector opt. 288 261 IF( tms(ji,jj) == 1 ) THEN 289 vinfor(4) = vinfor(4) + at_i(ji,jj)*aire(ji,jj) / 1.0e12 !ice area290 IF (at_i(ji,jj).GT.0.15) vinfor(6) = vinfor(6) + aire(ji,jj) / 1.0e12 !ice extent291 vinfor(8) = vinfor(8) + vt_i(ji,jj)*aire(ji,jj) / 1.0e12 !ice volume292 vinfor(10) = vinfor(10) + vt_s(ji,jj)*aire(ji,jj) / 1.0e12 !snow volume293 vinfor(16) = vinfor(16) + ot_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) / 1.0e12 !mean age294 vinfor(30) = vinfor(30) + smt_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) / 1.0e12 !mean salinity262 vinfor(4) = vinfor(4) + at_i(ji,jj)*aire(ji,jj) * 1.e-12 !ice area 263 IF (at_i(ji,jj).GT.0.15) vinfor(6) = vinfor(6) + aire(ji,jj) * 1.e-12 !ice extent 264 vinfor(8) = vinfor(8) + vt_i(ji,jj)*aire(ji,jj) * 1.e-12 !ice volume 265 vinfor(10) = vinfor(10) + vt_s(ji,jj)*aire(ji,jj) * 1.e-12 !snow volume 266 vinfor(16) = vinfor(16) + ot_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) * 1.e-12 !mean age 267 vinfor(30) = vinfor(30) + smt_i(ji,jj)*vt_i(ji,jj)*aire(ji,jj) * 1.e-12 !mean salinity 295 268 ! this diagnostic is not well computed (weighted by vol instead 296 269 ! of area) 297 270 vinfor(32) = vinfor(32) + vt_i(ji,jj)*( u_ice(ji,jj)*u_ice(ji,jj) + & 298 271 v_ice(ji,jj)*v_ice(ji,jj) )*aire(ji,jj)/1.0e12 !ice vel 299 vinfor(54) = vinfor(54) + at_i(ji,jj)*emps(ji,jj)*aire(ji,jj) / 1.0e12 ! Total salt flux300 vinfor(56) = vinfor(56) + at_i(ji,jj)*fsbri(ji,jj)*aire(ji,jj) / 1.0e12 ! Brine drainage salt flux301 vinfor(58) = vinfor(58) + at_i(ji,jj)*fseqv(ji,jj)*aire(ji,jj) / 1.0e12 ! Equivalent salt flux302 vinfor(60) = vinfor(60) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) / 1.0e12 !SST303 vinfor(62) = vinfor(62) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) / 1.0e12 !SSS304 vinfor(66) = vinfor(66) + et_s(ji,jj)/1.0e9*aire(ji,jj) / 1.0e12 ! snow temperature305 vinfor(68) = vinfor(68) + et_i(ji,jj)/1.0e9*aire(ji,jj) / 1.0e12 ! ice enthalpy306 vinfor(70) = vinfor(70) + v_i(ji,jj,1)*aire(ji,jj) / 1.0e12 !ice volume307 vinfor(72) = vinfor(72) + v_i(ji,jj,2)*aire(ji,jj) / 1.0e12 !ice volume308 vinfor(74) = vinfor(74) + v_i(ji,jj,3)*aire(ji,jj) / 1.0e12 !ice volume309 vinfor(76) = vinfor(76) + v_i(ji,jj,4)*aire(ji,jj) / 1.0e12 !ice volume310 vinfor(78) = vinfor(78) + v_i(ji,jj,5)*aire(ji,jj) / 1.0e12 !ice volume272 vinfor(54) = vinfor(54) + at_i(ji,jj)*emps(ji,jj)*aire(ji,jj) * 1.e-12 ! Total salt flux 273 vinfor(56) = vinfor(56) + at_i(ji,jj)*fsbri(ji,jj)*aire(ji,jj) * 1.e-12 ! Brine drainage salt flux 274 vinfor(58) = vinfor(58) + at_i(ji,jj)*fseqv(ji,jj)*aire(ji,jj) * 1.e-12 ! Equivalent salt flux 275 vinfor(60) = vinfor(60) +(sst_m(ji,jj)+rt0)*at_i(ji,jj)*aire(ji,jj) * 1.e-12 !SST 276 vinfor(62) = vinfor(62) + sss_m(ji,jj)*at_i(ji,jj)*aire(ji,jj) * 1.e-12 !SSS 277 vinfor(66) = vinfor(66) + et_s(ji,jj)/1.0e9*aire(ji,jj) * 1.e-12 ! snow temperature 278 vinfor(68) = vinfor(68) + et_i(ji,jj)/1.0e9*aire(ji,jj) * 1.e-12 ! ice enthalpy 279 vinfor(70) = vinfor(70) + v_i(ji,jj,1)*aire(ji,jj) * 1.e-12 !ice volume 280 vinfor(72) = vinfor(72) + v_i(ji,jj,2)*aire(ji,jj) * 1.e-12 !ice volume 281 vinfor(74) = vinfor(74) + v_i(ji,jj,3)*aire(ji,jj) * 1.e-12 !ice volume 282 vinfor(76) = vinfor(76) + v_i(ji,jj,4)*aire(ji,jj) * 1.e-12 !ice volume 283 vinfor(78) = vinfor(78) + v_i(ji,jj,5)*aire(ji,jj) * 1.e-12 !ice volume 311 284 vinfor(80) = 0.0 312 vinfor(82) = vinfor(82) + emp(ji,jj)*aire(ji,jj) / 1.0e12 ! mass flux285 vinfor(82) = vinfor(82) + emp(ji,jj)*aire(ji,jj) * 1.e-12 ! mass flux 313 286 ENDIF 314 287 END DO … … 318 291 DO jj = 2, njeqm1 319 292 DO ji = fs_2, fs_jpim1 ! vector opt. 320 vinfor(12) = vinfor(12) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !undef def ice volume293 vinfor(12) = vinfor(12) + v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 !undef def ice volume 321 294 END DO 322 295 END DO … … 349 322 DO ji = fs_2, fs_jpim1 ! vector opt. 350 323 IF( tms(ji,jj) == 1 ) THEN 351 vinfor(34) = vinfor(34) + d_v_i_trp(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume352 vinfor(36) = vinfor(36) + d_v_i_thd(ji,jj,jl)*aire(ji,jj) / 1.0e12 !ice volume324 vinfor(34) = vinfor(34) + d_v_i_trp(ji,jj,jl)*aire(ji,jj) * 1.e-12 !ice volume 325 vinfor(36) = vinfor(36) + d_v_i_thd(ji,jj,jl)*aire(ji,jj) * 1.e-12 !ice volume 353 326 ENDIF 354 327 END DO … … 359 332 DO ji = fs_2, fs_jpim1 ! vector opt. 360 333 IF( tms(ji,jj) == 1 ) THEN 361 vinfor(38) = vinfor(38) + diag_sni_gr(ji,jj)*aire(ji,jj) / 1.0e12 !th growth rates362 vinfor(40) = vinfor(40) + diag_lat_gr(ji,jj)*aire(ji,jj) / 1.0e12363 vinfor(42) = vinfor(42) + diag_bot_gr(ji,jj)*aire(ji,jj) / 1.0e12364 vinfor(44) = vinfor(44) + diag_dyn_gr(ji,jj)*aire(ji,jj) / 1.0e12365 vinfor(46) = vinfor(46) + dv_dt_thd(ji,jj,5)*aire(ji,jj) / 1.0e12366 vinfor(48) = vinfor(48) + v_newice(ji,jj) *aire(ji,jj) / 1.0e12 / rdt_ice ! volume acc in OW334 vinfor(38) = vinfor(38) + diag_sni_gr(ji,jj)*aire(ji,jj) * 1.e-12 !th growth rates 335 vinfor(40) = vinfor(40) + diag_lat_gr(ji,jj)*aire(ji,jj) * 1.e-12 336 vinfor(42) = vinfor(42) + diag_bot_gr(ji,jj)*aire(ji,jj) * 1.e-12 337 vinfor(44) = vinfor(44) + diag_dyn_gr(ji,jj)*aire(ji,jj) * 1.e-12 338 vinfor(46) = vinfor(46) + dv_dt_thd(ji,jj,5)*aire(ji,jj) * 1.e-12 339 vinfor(48) = vinfor(48) + v_newice(ji,jj) *aire(ji,jj) * 1.e-12 / rdt_ice ! volume acc in OW 367 340 ENDIF 368 341 END DO 369 342 END DO 370 371 343 372 344 DO jl = 1, jpl … … 374 346 DO ji = fs_2, fs_jpim1 ! vector opt. 375 347 IF( tms(ji,jj) == 1 ) THEN 376 vinfor(64) = vinfor(64) + t_su(ji,jj,jl)*a_i(ji,jj,jl)*aire(ji,jj) / 1.0e12348 vinfor(64) = vinfor(64) + t_su(ji,jj,jl)*a_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 377 349 ENDIF 378 350 END DO … … 386 358 DO ji = fs_2, fs_jpim1 ! vector opt. 387 359 IF( tms(ji,jj) == 1 ) THEN 388 zafy = 0. 0389 zamy = 0. 0360 zafy = 0. 361 zamy = 0. 390 362 DO jl = 1, jpl 391 IF ((o_i(ji,jj,jl) - zshift_date).LT.0.0) THEN392 vinfor(18) = vinfor(18) + a_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 ! FY ice area393 vinfor(26) = vinfor(26) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 ! FY ice volume363 IF( (o_i(ji,jj,jl) - zshift_date) < 0. ) THEN 364 vinfor(18) = vinfor(18) + a_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 ! FY ice area 365 vinfor(26) = vinfor(26) + v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 ! FY ice volume 394 366 zafy = zafy + a_i(ji,jj,jl) 395 vinfor(50) = vinfor(50) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !FY ice salinity367 vinfor(50) = vinfor(50) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 !FY ice salinity 396 368 ENDIF 397 IF ((o_i(ji,jj,jl) - zshift_date).GT.0.0) THEN398 vinfor(20) = vinfor(20) + a_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 ! MY ice area399 vinfor(28) = vinfor(28) + v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12400 vinfor(52) = vinfor(52) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) / 1.0e12 !FY ice salinity369 IF( (o_i(ji,jj,jl) - zshift_date) > 0. ) THEN 370 vinfor(20) = vinfor(20) + a_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 ! MY ice area 371 vinfor(28) = vinfor(28) + v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 372 vinfor(52) = vinfor(52) + sm_i(ji,jj,jl)*v_i(ji,jj,jl)*aire(ji,jj) * 1.e-12 !FY ice salinity 401 373 zamy = zamy + a_i(ji,jj,jl) 402 374 ENDIF 403 375 END DO ! jl 404 376 IF ((at_i(ji,jj).GT.0.15).AND.(zafy.GT.zamy)) THEN 405 vinfor(22) = vinfor(22) + aire(ji,jj) / 1.0e12 ! Seasonal ice extent377 vinfor(22) = vinfor(22) + aire(ji,jj) * 1.e-12 ! Seasonal ice extent 406 378 ENDIF 407 379 IF ((at_i(ji,jj).GT.0.15).AND.(zafy.LE.zamy)) THEN 408 vinfor(24) = vinfor(24) + aire(ji,jj) / 1.0e12 ! Perennial ice extent380 vinfor(24) = vinfor(24) + aire(ji,jj) * 1.e-12 ! Perennial ice extent 409 381 ENDIF 410 382 ENDIF ! tms … … 427 399 naveg = 0 428 400 DO jv = 1, nvinfo 429 vinfom(jv) =0.0401 vinfom(jv) = 0. 430 402 END DO 431 403 !MV ENDIF 432 404 ! 433 405 END SUBROUTINE lim_dia 406 434 407 435 408 SUBROUTINE lim_dia_init … … 441 414 !! 442 415 !! ** input : Namelist namicedia 443 !! 444 !! history : 445 !! 8.5 ! 03-08 (C. Ethe) original code 446 !! 9.0 ! 08-03 (M. Vancoppenolle) LIM3 447 !!------------------------------------------------------------------- 448 NAMELIST/namicedia/fmtinf, nfrinf, ninfo, ntmoy 449 450 INTEGER :: jv , & ! dummy loop indice 451 & ntot , & 452 & ndeb , & 453 & irecl 454 455 REAL(wp) :: zxx0, zxx1 ! temporary scalars 456 416 !!------------------------------------------------------------------- 417 INTEGER :: jv ! dummy loop indice 418 INTEGER :: ntot , ndeb , irecl ! local integers 419 REAL(wp) :: zxx0, zxx1 ! local scalars 457 420 CHARACTER(len=jpchinf) :: titinf 458 421 CHARACTER(len=50) :: clname 459 !!------------------------------------------------------------------- 460 461 462 ! Read Namelist namicedia 463 REWIND ( numnam_ice ) 464 READ ( numnam_ice , namicedia ) 465 IF(lwp) THEN 422 !! 423 NAMELIST/namicedia/fmtinf, nfrinf, ninfo, ntmoy 424 !!------------------------------------------------------------------- 425 ! 426 REWIND( numnam_ice ) ! read namicedia namelist 427 READ ( numnam_ice, namicedia ) 428 ! 429 IF(lwp) THEN ! control print 466 430 WRITE(numout,*) 467 431 WRITE(numout,*) 'lim_dia_init : ice parameters for ice diagnostics ' … … 473 437 ENDIF 474 438 475 ! masked grid cell area 476 aire(:,:) = area(:,:) * tms(:,:) 439 aire(:,:) = area(:,:) * tms(:,:) * tmask_i(:,:) ! masked grid cell area (interior domain only) 477 440 478 441 ! Titles of ice key variables : … … 580 543 581 544 ! opening "ice_evolu" file 582 IF ( lk_mpp ) THEN 583 WRITE(clname,FMT="('ice.evolu_',I4.4)") narea-1 584 ELSE 585 clname = 'ice.evolu' 545 IF( lk_mpp ) THEN ; WRITE(clname,FMT="('ice.evolu_',I4.4)") narea-1 546 ELSE ; clname = 'ice.evolu' 586 547 END IF 587 548 irecl = ( jpchinf + 1 ) * nvinfo 588 CALL ctl opn( numevo_ice, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', &589 & irecl, numout, .TRUE., narea )549 CALL ctl_opn( numevo_ice, clname, 'UNKNOWN', 'FORMATTED', 'SEQUENTIAL', & 550 & irecl, numout, lwp, narea ) 590 551 591 552 !- ecriture de 2 lignes d''entete : … … 596 557 597 558 !- ecriture de 2 lignes de titre : 598 WRITE(numevo_ice,'(A,I8,A,I8,A,I5)') 559 WRITE(numevo_ice,'(A,I8,A,I8,A,I5)') & 599 560 'Evolution chronologique - Experience '//cexper & 600 561 //' de', ndeb, ' a', nferme, ' pas', ninfo 601 562 WRITE(numevo_ice,fmtitr) ( titvar(jv), jv = 1, nvinfo ) 602 563 603 604 564 !--preparation de "titvar" pour l''ecriture parmi les valeurs numeriques : 605 DO 565 DO jv = 2 , nvinfo 606 566 titinf = titvar(jv)(:jpchinf) 607 567 titvar(jv) = ' '//titinf … … 609 569 610 570 !--Initialisation of the arrays for the accumulation 611 DO 571 DO jv = 1, nvinfo 612 572 vinfom(jv) = 0. 613 573 END DO … … 616 576 1000 FORMAT( 3(A20),4(1x,I6) ) 617 577 1111 FORMAT( 3(F7.1,1X,F7.3,1X),I3,A ) 618 578 ! 619 579 END SUBROUTINE lim_dia_init 620 580 621 581 #else 622 582 !!---------------------------------------------------------------------- 623 !! Default option : NO LIMsea-ice model583 !! Default option : NO LIM-3 sea-ice model 624 584 !!---------------------------------------------------------------------- 625 585 CONTAINS
Note: See TracChangeset
for help on using the changeset viewer.