Changeset 4558 for trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
- Timestamp:
- 2014-03-19T10:35:49+01:00 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMOGCM/NEMO/OPA_SRC/DIA/diahsb.F90
r4333 r4558 36 36 LOGICAL, PUBLIC :: ln_diahsb !: check the heat and salt budgets 37 37 38 REAL(wp), SAVE :: frc_t , frc_s , frc_v ! global forcing trends 39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ssh_ini ! 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hc_loc_ini, sc_loc_ini, e3t_ini ! 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: hcssh_loc_ini, scssh_loc_ini ! 38 REAL(dp) :: surf_tot ! 39 REAL(dp) :: frc_t , frc_s , frc_v ! global forcing trends 40 REAL(dp) :: frc_wn_t , frc_wn_s ! global forcing trends 41 REAL(dp), DIMENSION(:,:) , ALLOCATABLE :: surf , ssh_ini ! 42 REAL(dp), DIMENSION(:,:,:), ALLOCATABLE :: hc_loc_ini, sc_loc_ini, e3t_ini ! 43 REAL(dp), DIMENSION(:,:) , ALLOCATABLE :: ssh_hc_loc_ini, ssh_sc_loc_ini 42 44 43 45 !! * Substitutions … … 67 69 !! 68 70 INTEGER :: jk ! dummy loop indice 69 REAL(wp) :: zdiff_hc , zdiff_sc ! heat and salt content variations 70 REAL(wp) :: zdiff_v1 , zdiff_v2 ! volume variation 71 REAL(wp) :: z_hc , z_sc ! heat and salt content 72 REAL(wp) :: z_v1 , z_v2 ! volume 73 REAL(wp) :: zdeltat ! - - 74 REAL(wp) :: z_frc_trd_t , z_frc_trd_s ! - - 75 REAL(wp) :: z_frc_trd_v ! - - 76 REAL(wp), POINTER, DIMENSION(:,:) :: zsurf ! 71 REAL(dp) :: zdiff_hc , zdiff_sc ! heat and salt content variations 72 REAL(dp) :: zdiff_hc1 , zdiff_sc1 ! - - - - - - - - 73 REAL(dp) :: zdiff_v1 , zdiff_v2 ! volume variation 74 REAL(dp) :: zerr_hc1 , zerr_sc1 ! heat and salt content misfit 75 REAL(dp) :: zvol_tot ! volume 76 REAL(dp) :: z_frc_trd_t , z_frc_trd_s ! - - 77 REAL(dp) :: z_frc_trd_v ! - - 78 REAL(dp) :: z_wn_trd_t , z_wn_trd_s ! - - 79 REAL(dp) :: z_ssh_hc , z_ssh_sc ! - - 77 80 !!--------------------------------------------------------------------------- 78 81 IF( nn_timing == 1 ) CALL timing_start('dia_hsb') 79 82 80 CALL wrk_alloc( jpi, jpj, zsurf )81 82 zsurf(:,:) = e1t(:,:) * e2t(:,:) * tmask(:,:,1) * tmask_i(:,:) ! masked surface grid cell area83 84 83 ! ------------------------- ! 85 84 ! 1 - Trends due to forcing ! 86 85 ! ------------------------- ! 87 z_frc_trd_v = r1_rau0 * glob_sum( - ( emp(:,:) - rnf(:,:) ) * zsurf(:,:) ) ! volume fluxes88 z_frc_trd_t = glob_sum( sbc_tsc(:,:,jp_tem) * zsurf(:,:) ) ! heat fluxes89 z_frc_trd_s = glob_sum( sbc_tsc(:,:,jp_sal) * zsurf(:,:) ) ! salt fluxes90 ! 91 IF( ln_rnf ) z_frc_trd_t = z_frc_trd_t + glob_sum( rnf_tsc(:,:,jp_tem) * zsurf(:,:) )92 IF( ln_rnf_sal) z_frc_trd_s = z_frc_trd_s + glob_sum( rnf_tsc(:,:,jp_sal) * zsurf(:,:) )86 z_frc_trd_v = r1_rau0 * glob_sum( - ( emp(:,:) - rnf(:,:) ) * surf(:,:) ) ! volume fluxes 87 z_frc_trd_t = glob_sum( sbc_tsc(:,:,jp_tem) * surf(:,:) ) ! heat fluxes 88 z_frc_trd_s = glob_sum( sbc_tsc(:,:,jp_sal) * surf(:,:) ) ! salt fluxes 89 ! Add runoff heat & salt input 90 IF( ln_rnf ) z_frc_trd_t = z_frc_trd_t + glob_sum( rnf_tsc(:,:,jp_tem) * surf(:,:) ) 91 IF( ln_rnf_sal) z_frc_trd_s = z_frc_trd_s + glob_sum( rnf_tsc(:,:,jp_sal) * surf(:,:) ) 93 92 94 93 ! Add penetrative solar radiation 95 IF( ln_traqsr ) z_frc_trd_t = z_frc_trd_t + r1_rau0_rcp * glob_sum( qsr (:,:) * zsurf(:,:) )94 IF( ln_traqsr ) z_frc_trd_t = z_frc_trd_t + r1_rau0_rcp * glob_sum( qsr (:,:) * surf(:,:) ) 96 95 ! Add geothermal heat flux 97 IF( ln_trabbc ) z_frc_trd_t = z_frc_trd_t + glob_sum( qgh_trd0(:,:) * zsurf(:,:) ) 98 ! 96 IF( ln_trabbc ) z_frc_trd_t = z_frc_trd_t + glob_sum( qgh_trd0(:,:) * surf(:,:) ) 97 ! 98 IF( .NOT. lk_vvl ) THEN 99 z_wn_trd_t = - glob_sum( surf(:,:) * wn(:,:,1) * tsb(:,:,1,jp_tem) ) 100 z_wn_trd_s = - glob_sum( surf(:,:) * wn(:,:,1) * tsb(:,:,1,jp_sal) ) 101 ENDIF 102 99 103 frc_v = frc_v + z_frc_trd_v * rdt 100 104 frc_t = frc_t + z_frc_trd_t * rdt 101 105 frc_s = frc_s + z_frc_trd_s * rdt 106 ! ! Advection flux through fixed surface (z=0) 107 IF( .NOT. lk_vvl ) THEN 108 frc_wn_t = frc_wn_t + z_wn_trd_t * rdt 109 frc_wn_s = frc_wn_s + z_wn_trd_s * rdt 110 ENDIF 102 111 103 112 ! ------------------------ ! 104 ! 2 a- Content variations !113 ! 2 - Content variations ! 105 114 ! ------------------------ ! 106 zdiff_v2 = 0._wp 107 zdiff_hc = 0._wp 108 zdiff_sc = 0._wp 115 zdiff_v2 = 0.d0 116 zdiff_hc = 0.d0 117 zdiff_sc = 0.d0 118 109 119 ! volume variation (calculated with ssh) 110 zdiff_v1 = glob_sum( zsurf(:,:) * ( sshn(:,:) - ssh_ini(:,:) ) ) 120 zdiff_v1 = glob_sum( surf(:,:) * ( sshn(:,:) - ssh_ini(:,:) ) ) 121 122 ! heat & salt content variation (associated with ssh) 123 IF( .NOT. lk_vvl ) THEN 124 z_ssh_hc = glob_sum( surf(:,:) * ( tsn(:,:,1,jp_tem) * sshn(:,:) - ssh_hc_loc_ini(:,:) ) ) 125 z_ssh_sc = glob_sum( surf(:,:) * ( tsn(:,:,1,jp_sal) * sshn(:,:) - ssh_sc_loc_ini(:,:) ) ) 126 ENDIF 127 111 128 DO jk = 1, jpkm1 112 129 ! volume variation (calculated with scale factors) 113 zdiff_v2 = zdiff_v2 + glob_sum( zsurf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) - e3t_ini(:,:,jk) ) ) 130 zdiff_v2 = zdiff_v2 + glob_sum( surf(:,:) * tmask(:,:,jk) & 131 & * ( fse3t_n(:,:,jk) - e3t_ini(:,:,jk) ) ) 114 132 ! heat content variation 115 zdiff_hc = zdiff_hc + glob_sum( zsurf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) * tsn(:,:,jk,jp_tem) &116 & - hc_loc_ini(:,:,jk) ) )133 zdiff_hc = zdiff_hc + glob_sum( surf(:,:) * tmask(:,:,jk) & 134 & * ( fse3t_n(:,:,jk) * tsn(:,:,jk,jp_tem) - hc_loc_ini(:,:,jk) ) ) 117 135 ! salt content variation 118 zdiff_sc = zdiff_sc + glob_sum( zsurf(:,:) * tmask(:,:,jk) * ( fse3t_n(:,:,jk) * tsn(:,:,jk,jp_sal) &119 & - sc_loc_ini(:,:,jk) ) )136 zdiff_sc = zdiff_sc + glob_sum( surf(:,:) * tmask(:,:,jk) & 137 & * ( fse3t_n(:,:,jk) * tsn(:,:,jk,jp_sal) - sc_loc_ini(:,:,jk) ) ) 120 138 ENDDO 121 139 122 140 ! Substract forcing from heat content, salt content and volume variations 123 !frc_v = zdiff_v2 - frc_v 124 !frc_t = zdiff_hc - frc_t 125 !frc_s = zdiff_sc - frc_s 126 127 ! add ssh if not vvl 141 zdiff_v1 = zdiff_v1 - frc_v 142 IF( lk_vvl ) zdiff_v2 = zdiff_v2 - frc_v 143 zdiff_hc = zdiff_hc - frc_t 144 zdiff_sc = zdiff_sc - frc_s 128 145 IF( .NOT. lk_vvl ) THEN 129 zdiff_v2 = zdiff_v2 + zdiff_v1 130 zdiff_hc = zdiff_hc + glob_sum( zsurf(:,:) * ( sshn(:,:) * tsn(:,:,1,jp_tem) & 131 & - hcssh_loc_ini(:,:) ) ) 132 zdiff_sc = zdiff_sc + glob_sum( zsurf(:,:) * ( sshn(:,:) * tsn(:,:,1,jp_sal) & 133 & - scssh_loc_ini(:,:) ) ) 134 ENDIF 135 ! 136 ! ----------------------- ! 137 ! 2b - Content ! 138 ! ----------------------- ! 139 z_v2 = 0._wp 140 z_hc = 0._wp 141 z_sc = 0._wp 142 ! volume (calculated with ssh) 143 z_v1 = glob_sum( zsurf(:,:) * sshn(:,:) ) 144 DO jk = 1, jpkm1 145 ! volume (calculated with scale factors) 146 z_v2 = z_v2 + glob_sum( zsurf(:,:) * tmask(:,:,jk) * fse3t_n(:,:,jk) ) 147 ! heat content 148 z_hc = z_hc + glob_sum( zsurf(:,:) * tmask(:,:,jk) * fse3t_n(:,:,jk) * tsn(:,:,jk,jp_tem) ) 149 ! salt content 150 z_sc = z_sc + glob_sum( zsurf(:,:) * tmask(:,:,jk) * fse3t_n(:,:,jk) * tsn(:,:,jk,jp_sal) ) 151 ENDDO 152 ! add ssh if not vvl 153 IF( .NOT. lk_vvl ) THEN 154 z_v2 = z_v2 + z_v1 155 z_hc = z_hc + glob_sum( zsurf(:,:) * sshn(:,:) * tsn(:,:,1,jp_tem) ) 156 z_sc = z_sc + glob_sum( zsurf(:,:) * sshn(:,:) * tsn(:,:,1,jp_sal) ) 146 zdiff_hc1 = zdiff_hc + z_ssh_hc 147 zdiff_sc1 = zdiff_sc + z_ssh_sc 148 zerr_hc1 = z_ssh_hc - frc_wn_t 149 zerr_sc1 = z_ssh_sc - frc_wn_s 157 150 ENDIF 158 151 … … 160 153 ! 3 - Diagnostics writing ! 161 154 ! ----------------------- ! 162 zdeltat = 1.e0 / ( ( kt - nit000 + 1 ) * rdt ) 163 ! 164 CALL iom_put( 'bgtemper' , z_hc / z_v2 ) ! Temperature (C) 165 CALL iom_put( 'bgsaline' , z_sc / z_v2 ) ! Salinity (psu) 166 CALL iom_put( 'bgheatco' , zdiff_hc * rau0 * rcp * 1.e-9_wp ) ! Heat content variation (10^9 J) 167 CALL iom_put( 'bgsaltco' , zdiff_sc * 1.e-9 ) ! Salt content variation (psu*km3) 168 CALL iom_put( 'bgvolssh' , zdiff_v1 * 1.e-9 ) ! volume ssh (km3) 169 CALL iom_put( 'bgsshtot' , zdiff_v1 / glob_sum(zsurf) ) ! ssh (m) 170 CALL iom_put( 'bgvoltot' , zdiff_v2 * 1.e-9 ) ! volume total (km3) 171 CALL iom_put( 'bgfrcvol' , frc_v * 1.e-9 ) ! vol - surface forcing (volume) 172 CALL iom_put( 'bgfrctem' , frc_t * rau0 * rcp * 1.e-9_wp ) ! hc - surface forcing (heat content) 173 CALL iom_put( 'bgfrcsal' , frc_s * 1.e-9 ) ! sc - surface forcing (salt content) 174 ! 175 CALL wrk_dealloc( jpi, jpj, zsurf ) 176 ! 155 zvol_tot = 0.d0 ! total ocean volume 156 DO jk = 1, jpkm1 157 zvol_tot = zvol_tot + glob_sum( surf(:,:) * tmask(:,:,jk) * fse3t_n(:,:,jk) ) 158 END DO 159 160 IF( lk_vvl ) THEN 161 CALL iom_put( 'bgtemper' , zdiff_hc / zvol_tot ) ! Temperature variation (C) 162 CALL iom_put( 'bgsaline' , zdiff_sc / zvol_tot ) ! Salinity variation (psu) 163 CALL iom_put( 'bgheatco' , zdiff_hc * 1.e-20 * rau0 * rcp ) ! Heat content variation (1.e20 J) 164 CALL iom_put( 'bgsaltco' , zdiff_sc * 1.e-9 ) ! Salt content variation (psu*km3) 165 CALL iom_put( 'bgvolssh' , zdiff_v1 * 1.e-9 ) ! volume ssh variation (km3) 166 CALL iom_put( 'bgvole3t' , zdiff_v2 * 1.e-9 ) ! volume e3t variation (km3) 167 CALL iom_put( 'bgfrcvol' , frc_v * 1.e-9 ) ! vol - surface forcing (km3) 168 CALL iom_put( 'bgfrctem' , frc_t / zvol_tot ) ! hc - surface forcing (C) 169 CALL iom_put( 'bgfrcsal' , frc_s / zvol_tot ) ! sc - surface forcing (psu) 170 ELSE 171 CALL iom_put( 'bgtemper' , zdiff_hc1 / zvol_tot) ! Heat content variation (C) 172 CALL iom_put( 'bgsaline' , zdiff_sc1 / zvol_tot) ! Salt content variation (psu) 173 CALL iom_put( 'bgheatco' , zdiff_hc1 * 1.e-20 * rau0 * rcp ) ! Heat content variation (1.e20 J) 174 CALL iom_put( 'bgsaltco' , zdiff_sc1 * 1.e-9 ) ! Salt content variation (psu*km3) 175 CALL iom_put( 'bgvolssh' , zdiff_v1 * 1.e-9 ) ! volume ssh variation (km3) 176 CALL iom_put( 'bgfrcvol' , frc_v * 1.e-9 ) ! vol - surface forcing (km3) 177 CALL iom_put( 'bgfrctem' , frc_t / zvol_tot ) ! hc - surface forcing (C) 178 CALL iom_put( 'bgfrcsal' , frc_s / zvol_tot ) ! sc - surface forcing (psu) 179 CALL iom_put( 'bgmistem' , zerr_hc1 / zvol_tot ) ! hc - error due to free surface (C) 180 CALL iom_put( 'bgmissal' , zerr_sc1 / zvol_tot ) ! sc - error due to free surface (psu) 181 ENDIF 182 ! 183 IF( lrst_oce ) CALL dia_hsb_rst( kt, 'WRITE' ) 184 177 185 IF( nn_timing == 1 ) CALL timing_stop('dia_hsb') 178 186 ! … … 222 230 WRITE(numout,*) ' Namelist namhsb : set hsb parameters' 223 231 WRITE(numout,*) ' Switch for hsb diagnostic (T) or not (F) ln_diahsb = ', ln_diahsb 232 WRITE(numout,*) 224 233 ENDIF 225 234 226 235 IF( .NOT. ln_diahsb ) RETURN 227 228 ! ------------------- ! 229 ! 1 - Allocate memory ! 230 ! ------------------- ! 231 ALLOCATE( hc_loc_ini(jpi,jpj,jpk), STAT=ierror ) 232 IF( ierror > 0 ) THEN 233 CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' ) ; RETURN 234 ENDIF 235 ALLOCATE( sc_loc_ini(jpi,jpj,jpk), STAT=ierror ) 236 IF( ierror > 0 ) THEN 237 CALL ctl_stop( 'dia_hsb: unable to allocate sc_loc_ini' ) ; RETURN 238 ENDIF 239 ALLOCATE( hcssh_loc_ini(jpi,jpj), STAT=ierror ) 240 IF( ierror > 0 ) THEN 241 CALL ctl_stop( 'dia_hsb: unable to allocate hcssh_loc_ini' ) ; RETURN 242 ENDIF 243 ALLOCATE( scssh_loc_ini(jpi,jpj), STAT=ierror ) 244 IF( ierror > 0 ) THEN 245 CALL ctl_stop( 'dia_hsb: unable to allocate scssh_loc_ini' ) ; RETURN 246 ENDIF 247 ALLOCATE( e3t_ini(jpi,jpj,jpk) , STAT=ierror ) 248 IF( ierror > 0 ) THEN 249 CALL ctl_stop( 'dia_hsb: unable to allocate e3t_ini' ) ; RETURN 250 ENDIF 251 ALLOCATE( ssh_ini(jpi,jpj) , STAT=ierror ) 252 IF( ierror > 0 ) THEN 253 CALL ctl_stop( 'dia_hsb: unable to allocate ssh_ini' ) ; RETURN 254 ENDIF 255 256 ! ----------------------------------------------- ! 257 ! 2 - Time independant variables and file opening ! 258 ! ----------------------------------------------- ! 259 IF(lwp) WRITE(numout,*) "dia_hsb: heat salt volume budgets activated" 260 IF( lk_bdy ) THEN 261 CALL ctl_warn( 'dia_hsb does not take open boundary fluxes into account' ) 262 ENDIF 263 ! 264 CALL dia_hsb_rst( nit000, 'READ' ) !* read or initialize all required files 236 ! IF( .NOT. lk_mpp_rep ) & 237 ! CALL ctl_stop (' Your global mpp_sum if performed in single precision - 64 bits -', & 238 ! & ' whereas the global sum to be precise must be done in double precision ',& 239 ! & ' please add key_mpp_rep') 240 241 ! ------------------- ! 242 ! 1 - Allocate memory ! 243 ! ------------------- ! 244 ALLOCATE( hc_loc_ini(jpi,jpj,jpk), sc_loc_ini(jpi,jpj,jpk), & 245 & e3t_ini(jpi,jpj,jpk), surf(jpi,jpj), ssh_ini(jpi,jpj), STAT=ierror ) 246 IF( ierror > 0 ) THEN 247 CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' ) ; RETURN 248 ENDIF 249 250 IF(.NOT. lk_vvl ) ALLOCATE( ssh_hc_loc_ini(jpi,jpj), ssh_sc_loc_ini(jpi,jpj),STAT=ierror ) 251 IF( ierror > 0 ) THEN 252 CALL ctl_stop( 'dia_hsb: unable to allocate hc_loc_ini' ) ; RETURN 253 ENDIF 254 255 ! ----------------------------------------------- ! 256 ! 2 - Time independant variables and file opening ! 257 ! ----------------------------------------------- ! 258 IF(lwp) WRITE(numout,*) "dia_hsb: heat salt volume budgets activated" 259 IF(lwp) WRITE(numout,*) '~~~~~~~' 260 surf(:,:) = e1t(:,:) * e2t(:,:) * tmask(:,:,1) * tmask_i(:,:) ! masked surface grid cell area 261 surf_tot = glob_sum( surf(:,:) ) ! total ocean surface area 262 263 IF( lk_bdy ) CALL ctl_warn( 'dia_hsb does not take open boundary fluxes into account' ) 264 ! 265 ! ---------------------------------- ! 266 ! 4 - initial conservation variables ! 267 ! ---------------------------------- ! 268 CALL dia_hsb_rst( nit000, 'READ' ) !* read or initialize all required files 265 269 ! 266 270 END SUBROUTINE dia_hsb_init … … 285 289 !id1 = iom_varid( numror, 'frc_vol' , ldstop = .FALSE. ) 286 290 ! 291 IF(lwp) WRITE(numout,*) '~~~~~~~' 292 IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 293 IF(lwp) WRITE(numout,*) '~~~~~~~' 287 294 CALL iom_get( numror, 'frc_v', frc_v ) 288 295 CALL iom_get( numror, 'frc_t', frc_t ) 289 296 CALL iom_get( numror, 'frc_s', frc_s ) 290 297 IF( .NOT. lk_vvl ) THEN 298 CALL iom_get( numror, 'frc_wn_t', frc_wn_t ) 299 CALL iom_get( numror, 'frc_wn_s', frc_wn_s ) 300 ENDIF 291 301 CALL iom_get( numror, jpdom_autoglo, 'ssh_ini', ssh_ini ) 292 302 CALL iom_get( numror, jpdom_autoglo, 'e3t_ini', e3t_ini ) 293 303 CALL iom_get( numror, jpdom_autoglo, 'hc_loc_ini', hc_loc_ini ) 294 304 CALL iom_get( numror, jpdom_autoglo, 'sc_loc_ini', sc_loc_ini ) 295 CALL iom_get( numror, jpdom_autoglo, 'hcssh_loc_ini', hcssh_loc_ini ) 296 CALL iom_get( numror, jpdom_autoglo, 'scssh_loc_ini', scssh_loc_ini ) 305 IF( .NOT. lk_vvl ) THEN 306 CALL iom_get( numror, jpdom_autoglo, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 307 CALL iom_get( numror, jpdom_autoglo, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 308 ENDIF 297 309 ELSE 310 IF(lwp) WRITE(numout,*) '~~~~~~~' 311 IF(lwp) WRITE(numout,*) ' dia_hsb at initial state ' 312 IF(lwp) WRITE(numout,*) '~~~~~~~' 298 313 ssh_ini(:,:) = sshn(:,:) ! initial ssh 299 314 DO jk = 1, jpk … … 302 317 sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * fse3t_n(:,:,jk) ! initial salt content 303 318 END DO 304 hcssh_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:) ! initial heat content in ssh 305 scssh_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:) ! initial salt content in ssh 306 frc_v = 0._wp 307 frc_t = 0._wp 308 frc_s = 0._wp 319 frc_v = 0.d0 ! volume trend due to forcing 320 frc_t = 0.d0 ! heat content - - - - 321 frc_s = 0.d0 ! salt content - - - - 322 IF( .NOT. lk_vvl ) THEN 323 ssh_hc_loc_ini(:,:) = tsn(:,:,1,jp_tem) * sshn(:,:) ! initial heat content in ssh 324 ssh_sc_loc_ini(:,:) = tsn(:,:,1,jp_sal) * sshn(:,:) ! initial salt content in ssh 325 frc_wn_t = 0.d0 ! initial heat content misfit due to free surface 326 frc_wn_s = 0.d0 ! initial salt content misfit due to free surface 327 ENDIF 309 328 ENDIF 310 329 311 330 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN ! Create restart file 312 331 ! ! ------------------- 313 IF(lwp) WRITE(numout,*) '---- dia-rst ----' 332 IF(lwp) WRITE(numout,*) '~~~~~~~' 333 IF(lwp) WRITE(numout,*) ' dia_hsb_rst at it= ', kt,' date= ', ndastp 334 IF(lwp) WRITE(numout,*) '~~~~~~~' 335 314 336 CALL iom_rstput( kt, nitrst, numrow, 'frc_v' , frc_v ) 315 337 CALL iom_rstput( kt, nitrst, numrow, 'frc_t' , frc_t ) 316 338 CALL iom_rstput( kt, nitrst, numrow, 'frc_s' , frc_s ) 317 339 IF( .NOT. lk_vvl ) THEN 340 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_t', frc_wn_t ) 341 CALL iom_rstput( kt, nitrst, numrow, 'frc_wn_s', frc_wn_s ) 342 ENDIF 318 343 CALL iom_rstput( kt, nitrst, numrow, 'ssh_ini', ssh_ini ) 319 344 CALL iom_rstput( kt, nitrst, numrow, 'e3t_ini', e3t_ini ) 320 345 CALL iom_rstput( kt, nitrst, numrow, 'hc_loc_ini', hc_loc_ini ) 321 346 CALL iom_rstput( kt, nitrst, numrow, 'sc_loc_ini', sc_loc_ini ) 322 CALL iom_rstput( kt, nitrst, numrow, 'hcssh_loc_ini', hcssh_loc_ini ) 323 CALL iom_rstput( kt, nitrst, numrow, 'scssh_loc_ini', scssh_loc_ini ) 347 IF( .NOT. lk_vvl ) THEN 348 CALL iom_rstput( kt, nitrst, numrow, 'ssh_hc_loc_ini', ssh_hc_loc_ini ) 349 CALL iom_rstput( kt, nitrst, numrow, 'ssh_sc_loc_ini', ssh_sc_loc_ini ) 350 ENDIF 324 351 ! 325 352 ENDIF
Note: See TracChangeset
for help on using the changeset viewer.