[825] | 1 | MODULE limwri |
---|
| 2 | !!====================================================================== |
---|
| 3 | !! *** MODULE limwri *** |
---|
| 4 | !! Ice diagnostics : write ice output files |
---|
| 5 | !!====================================================================== |
---|
[888] | 6 | #if defined key_lim3 |
---|
[825] | 7 | !!---------------------------------------------------------------------- |
---|
[2528] | 8 | !! 'key_lim3' LIM3 sea-ice model |
---|
[825] | 9 | !!---------------------------------------------------------------------- |
---|
| 10 | !! lim_wri : write of the diagnostics variables in ouput file |
---|
[4161] | 11 | !! lim_wri_state : write for initial state or/and abandon |
---|
[825] | 12 | !!---------------------------------------------------------------------- |
---|
| 13 | USE ioipsl |
---|
[888] | 14 | USE dianam ! build name of file (routine) |
---|
[825] | 15 | USE phycst |
---|
| 16 | USE dom_oce |
---|
[888] | 17 | USE sbc_oce ! Surface boundary condition: ocean fields |
---|
| 18 | USE sbc_ice ! Surface boundary condition: ice fields |
---|
[825] | 19 | USE ice |
---|
[2715] | 20 | USE limvar |
---|
| 21 | USE in_out_manager |
---|
[825] | 22 | USE lbclnk |
---|
[2715] | 23 | USE lib_mpp ! MPP library |
---|
[3294] | 24 | USE wrk_nemo ! work arrays |
---|
[4161] | 25 | USE iom |
---|
| 26 | USE timing ! Timing |
---|
| 27 | USE lib_fortran ! Fortran utilities |
---|
[825] | 28 | |
---|
| 29 | IMPLICIT NONE |
---|
| 30 | PRIVATE |
---|
| 31 | |
---|
| 32 | PUBLIC lim_wri ! routine called by lim_step.F90 |
---|
[4161] | 33 | PUBLIC lim_wri_state ! called by dia_wri_state |
---|
[825] | 34 | |
---|
[2528] | 35 | !!---------------------------------------------------------------------- |
---|
[4161] | 36 | !! NEMO/LIM3 4.0 , UCL - NEMO Consortium (2011) |
---|
[2528] | 37 | !! $Id$ |
---|
[2715] | 38 | !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) |
---|
[2528] | 39 | !!---------------------------------------------------------------------- |
---|
| 40 | CONTAINS |
---|
[825] | 41 | |
---|
| 42 | SUBROUTINE lim_wri( kindic ) |
---|
| 43 | !!------------------------------------------------------------------- |
---|
| 44 | !! This routine computes the average of some variables and write it |
---|
| 45 | !! on the ouput files. |
---|
| 46 | !! ATTENTION cette routine n'est valable que si le pas de temps est |
---|
| 47 | !! egale a une fraction entiere de 1 jours. |
---|
| 48 | !! Diff 1-D 3-D : suppress common also included in etat |
---|
| 49 | !! suppress cmoymo 11-18 |
---|
| 50 | !! modif : 03/06/98 |
---|
| 51 | !!------------------------------------------------------------------- |
---|
[2715] | 52 | INTEGER, INTENT(in) :: kindic ! if kindic < 0 there has been an error somewhere |
---|
| 53 | ! |
---|
[4990] | 54 | INTEGER :: ji, jj, jk, jl ! dummy loop indices |
---|
| 55 | REAL(wp) :: z1_365 |
---|
[6746] | 56 | REAL(wp) :: z2da, z2db, ztmp |
---|
[6515] | 57 | REAL(wp), POINTER, DIMENSION(:,:,:) :: zswi2 |
---|
[6746] | 58 | REAL(wp), POINTER, DIMENSION(:,:) :: z2d, zswi ! 2D workspace |
---|
[2715] | 59 | !!------------------------------------------------------------------- |
---|
[825] | 60 | |
---|
[4161] | 61 | IF( nn_timing == 1 ) CALL timing_start('limwri') |
---|
| 62 | |
---|
[6515] | 63 | CALL wrk_alloc( jpi, jpj, jpl, zswi2 ) |
---|
[6746] | 64 | CALL wrk_alloc( jpi, jpj , z2d, zswi ) |
---|
[2777] | 65 | |
---|
[4688] | 66 | !----------------------------- |
---|
| 67 | ! Mean category values |
---|
| 68 | !----------------------------- |
---|
[5202] | 69 | z1_365 = 1._wp / 365._wp |
---|
[825] | 70 | |
---|
[6515] | 71 | ! brine volume |
---|
| 72 | CALL lim_var_bv |
---|
[921] | 73 | |
---|
[6515] | 74 | ! tresholds for outputs |
---|
| 75 | DO jj = 1, jpj |
---|
[4688] | 76 | DO ji = 1, jpi |
---|
[4990] | 77 | zswi(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) |
---|
[4688] | 78 | END DO |
---|
| 79 | END DO |
---|
[6515] | 80 | DO jl = 1, jpl |
---|
| 81 | DO jj = 1, jpj |
---|
[4688] | 82 | DO ji = 1, jpi |
---|
[6515] | 83 | zswi2(ji,jj,jl) = MAX( 0._wp , SIGN( 1._wp , a_i(ji,jj,jl) - epsi06 ) ) |
---|
[4688] | 84 | END DO |
---|
| 85 | END DO |
---|
[6515] | 86 | END DO |
---|
[4688] | 87 | ! |
---|
[6970] | 88 | ! fluxes |
---|
| 89 | ! pfrld is the lead fraction at the previous time step (actually between TRP and THD) |
---|
| 90 | IF( iom_use('qsr_oce') ) CALL iom_put( "qsr_oce" , qsr_oce(:,:) * pfrld(:,:) ) ! solar flux at ocean surface |
---|
| 91 | IF( iom_use('qns_oce') ) CALL iom_put( "qns_oce" , qns_oce(:,:) * pfrld(:,:) + qemp_oce(:,:) ) ! non-solar flux at ocean surface |
---|
| 92 | IF( iom_use('qsr_ice') ) CALL iom_put( "qsr_ice" , SUM( qsr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! solar flux at ice surface |
---|
| 93 | IF( iom_use('qns_ice') ) CALL iom_put( "qns_ice" , SUM( qns_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) ) ! non-solar flux at ice surface |
---|
| 94 | IF( iom_use('qtr_ice') ) CALL iom_put( "qtr_ice" , SUM( ftr_ice(:,:,:) * a_i_b(:,:,:), dim=3 ) ) ! solar flux transmitted thru ice |
---|
| 95 | IF( iom_use('qt_oce' ) ) CALL iom_put( "qt_oce" , ( qsr_oce(:,:) + qns_oce(:,:) ) * pfrld(:,:) + qemp_oce(:,:) ) |
---|
| 96 | IF( iom_use('qt_ice' ) ) CALL iom_put( "qt_ice" , SUM( ( qns_ice(:,:,:) + qsr_ice(:,:,:) ) & |
---|
| 97 | & * a_i_b(:,:,:), dim=3 ) + qemp_ice(:,:) ) |
---|
| 98 | IF( iom_use('qemp_oce') ) CALL iom_put( "qemp_oce" , qemp_oce(:,:) ) |
---|
| 99 | IF( iom_use('qemp_ice') ) CALL iom_put( "qemp_ice" , qemp_ice(:,:) ) |
---|
| 100 | IF( iom_use('emp_oce' ) ) CALL iom_put( "emp_oce" , emp_oce(:,:) ) ! emp over ocean (taking into account the snow blown away from the ice) |
---|
| 101 | IF( iom_use('emp_ice' ) ) CALL iom_put( "emp_ice" , emp_ice(:,:) ) ! emp over ice (taking into account the snow blown away from the ice) |
---|
| 102 | |
---|
[6515] | 103 | ! velocity |
---|
[4688] | 104 | IF ( iom_use( "uice_ipa" ) .OR. iom_use( "vice_ipa" ) .OR. iom_use( "icevel" ) ) THEN |
---|
| 105 | DO jj = 2 , jpjm1 |
---|
| 106 | DO ji = 2 , jpim1 |
---|
[6746] | 107 | z2da = ( u_ice(ji,jj) * umask(ji,jj,1) + u_ice(ji-1,jj) * umask(ji-1,jj,1) ) * 0.5_wp |
---|
| 108 | z2db = ( v_ice(ji,jj) * vmask(ji,jj,1) + v_ice(ji,jj-1) * vmask(ji,jj-1,1) ) * 0.5_wp |
---|
| 109 | z2d(ji,jj) = SQRT( z2da * z2da + z2db * z2db ) |
---|
[4688] | 110 | END DO |
---|
| 111 | END DO |
---|
[6746] | 112 | CALL lbc_lnk( z2d, 'T', 1. ) |
---|
[6853] | 113 | CALL iom_put( "uice_ipa" , u_ice ) ! ice velocity u component |
---|
| 114 | CALL iom_put( "vice_ipa" , v_ice ) ! ice velocity v component |
---|
| 115 | CALL iom_put( "icevel" , z2d ) ! ice velocity module |
---|
[4688] | 116 | ENDIF |
---|
[6764] | 117 | |
---|
[6853] | 118 | IF ( iom_use( "tau_icebfr" ) ) CALL iom_put( "tau_icebfr" , tau_icebfr ) ! ice friction with ocean bottom (landfast ice) |
---|
[4688] | 119 | ! |
---|
[6515] | 120 | IF ( iom_use( "miceage" ) ) CALL iom_put( "miceage" , om_i * zswi * z1_365 ) ! mean ice age |
---|
| 121 | IF ( iom_use( "icethic_cea" ) ) CALL iom_put( "icethic_cea" , htm_i * zswi ) ! ice thickness mean |
---|
| 122 | IF ( iom_use( "snowthic_cea" ) ) CALL iom_put( "snowthic_cea", htm_s * zswi ) ! snow thickness mean |
---|
| 123 | IF ( iom_use( "micet" ) ) CALL iom_put( "micet" , ( tm_i - rt0 ) * zswi ) ! ice mean temperature |
---|
| 124 | IF ( iom_use( "icest" ) ) CALL iom_put( "icest" , ( tm_su - rt0 ) * zswi ) ! ice surface temperature |
---|
| 125 | IF ( iom_use( "icecolf" ) ) CALL iom_put( "icecolf" , hicol ) ! frazil ice collection thickness |
---|
[4688] | 126 | ! |
---|
| 127 | CALL iom_put( "isst" , sst_m ) ! sea surface temperature |
---|
| 128 | CALL iom_put( "isss" , sss_m ) ! sea surface salinity |
---|
[6515] | 129 | CALL iom_put( "iceconc" , at_i * zswi ) ! ice concentration |
---|
| 130 | CALL iom_put( "icevolu" , vt_i * zswi ) ! ice volume = mean ice thickness over the cell |
---|
| 131 | CALL iom_put( "icehc" , et_i * zswi ) ! ice total heat content |
---|
| 132 | CALL iom_put( "isnowhc" , et_s * zswi ) ! snow total heat content |
---|
| 133 | CALL iom_put( "ibrinv" , bvm_i * zswi * 100. ) ! brine volume |
---|
[6853] | 134 | CALL iom_put( "utau_ice" , utau_ice ) ! wind stress over ice along i-axis at I-point |
---|
| 135 | CALL iom_put( "vtau_ice" , vtau_ice ) ! wind stress over ice along j-axis at I-point |
---|
[5407] | 136 | CALL iom_put( "snowpre" , sprecip * 86400. ) ! snow precipitation |
---|
[6515] | 137 | CALL iom_put( "micesalt" , smt_i * zswi ) ! mean ice salinity |
---|
[4161] | 138 | |
---|
[6746] | 139 | CALL iom_put( "icestr" , strength * zswi ) ! ice strength |
---|
[6853] | 140 | CALL iom_put( "idive" , divu_i * 1.0e8 ) ! divergence |
---|
| 141 | CALL iom_put( "ishear" , shear_i * 1.0e8 ) ! shear |
---|
[6515] | 142 | CALL iom_put( "snowvol" , vt_s * zswi ) ! snow volume |
---|
[4688] | 143 | |
---|
| 144 | CALL iom_put( "icetrp" , diag_trp_vi * rday ) ! ice volume transport |
---|
| 145 | CALL iom_put( "snwtrp" , diag_trp_vs * rday ) ! snw volume transport |
---|
[5123] | 146 | CALL iom_put( "saltrp" , diag_trp_smv * rday * rhoic ) ! salt content transport |
---|
[4688] | 147 | CALL iom_put( "deitrp" , diag_trp_ei ) ! advected ice enthalpy (W/m2) |
---|
| 148 | CALL iom_put( "destrp" , diag_trp_es ) ! advected snw enthalpy (W/m2) |
---|
[921] | 149 | |
---|
[6417] | 150 | CALL iom_put( "sfxbog" , sfx_bog * rday ) ! salt flux from bottom growth |
---|
[6515] | 151 | CALL iom_put( "sfxbom" , sfx_bom * rday ) ! salt flux from bottom melting |
---|
| 152 | CALL iom_put( "sfxsum" , sfx_sum * rday ) ! salt flux from surface melting |
---|
| 153 | CALL iom_put( "sfxlam" , sfx_lam * rday ) ! salt flux from lateral melting |
---|
[6417] | 154 | CALL iom_put( "sfxsni" , sfx_sni * rday ) ! salt flux from snow ice formation |
---|
| 155 | CALL iom_put( "sfxopw" , sfx_opw * rday ) ! salt flux from open water formation |
---|
[4688] | 156 | CALL iom_put( "sfxdyn" , sfx_dyn * rday ) ! salt flux from ridging rafting |
---|
[6515] | 157 | CALL iom_put( "sfxres" , sfx_res * rday ) ! salt flux from limupdate (resultant) |
---|
[4688] | 158 | CALL iom_put( "sfxbri" , sfx_bri * rday ) ! salt flux from brines |
---|
[6417] | 159 | CALL iom_put( "sfxsub" , sfx_sub * rday ) ! salt flux from sublimation |
---|
[4688] | 160 | CALL iom_put( "sfx" , sfx * rday ) ! total salt flux |
---|
[825] | 161 | |
---|
[4990] | 162 | ztmp = rday / rhoic |
---|
[5123] | 163 | CALL iom_put( "vfxres" , wfx_res * ztmp ) ! daily prod./melting due to limupdate |
---|
| 164 | CALL iom_put( "vfxopw" , wfx_opw * ztmp ) ! daily lateral thermodynamic ice production |
---|
| 165 | CALL iom_put( "vfxsni" , wfx_sni * ztmp ) ! daily snowice ice production |
---|
| 166 | CALL iom_put( "vfxbog" , wfx_bog * ztmp ) ! daily bottom thermodynamic ice production |
---|
| 167 | CALL iom_put( "vfxdyn" , wfx_dyn * ztmp ) ! daily dynamic ice production (rid/raft) |
---|
| 168 | CALL iom_put( "vfxsum" , wfx_sum * ztmp ) ! surface melt |
---|
| 169 | CALL iom_put( "vfxbom" , wfx_bom * ztmp ) ! bottom melt |
---|
[6515] | 170 | CALL iom_put( "vfxlam" , wfx_lam * ztmp ) ! lateral melt |
---|
[5123] | 171 | CALL iom_put( "vfxice" , wfx_ice * ztmp ) ! total ice growth/melt |
---|
[6746] | 172 | |
---|
[8085] | 173 | IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) & |
---|
[8063] | 174 | CALL iom_put( "vfxpnd" , wfx_pnd * ztmp ) ! melt pond water flux |
---|
| 175 | |
---|
[6746] | 176 | IF ( iom_use( "vfxthin" ) ) THEN ! ice production for open water + thin ice (<20cm) => comparable to observations |
---|
| 177 | WHERE( htm_i(:,:) < 0.2 .AND. htm_i(:,:) > 0. ) ; z2d = wfx_bog |
---|
| 178 | ELSEWHERE ; z2d = 0._wp |
---|
| 179 | END WHERE |
---|
| 180 | CALL iom_put( "vfxthin", ( wfx_opw + z2d ) * ztmp ) |
---|
| 181 | ENDIF |
---|
| 182 | |
---|
| 183 | ztmp = rday / rhosn |
---|
| 184 | CALL iom_put( "vfxspr" , wfx_spr * ztmp ) ! precip (snow) |
---|
[5123] | 185 | CALL iom_put( "vfxsnw" , wfx_snw * ztmp ) ! total snw growth/melt |
---|
[6746] | 186 | CALL iom_put( "vfxsub" , wfx_sub * ztmp ) ! sublimation (snow/ice) |
---|
[6970] | 187 | CALL iom_put( "vfxsub_err" , wfx_err_sub * ztmp ) ! "excess" of sublimation sent to ocean |
---|
[5123] | 188 | |
---|
| 189 | CALL iom_put( "afxtot" , afx_tot * rday ) ! concentration tendency (total) |
---|
| 190 | CALL iom_put( "afxdyn" , afx_dyn * rday ) ! concentration tendency (dynamics) |
---|
| 191 | CALL iom_put( "afxthd" , afx_thd * rday ) ! concentration tendency (thermo) |
---|
[825] | 192 | |
---|
[5123] | 193 | CALL iom_put ('hfxthd' , hfx_thd(:,:) ) ! |
---|
| 194 | CALL iom_put ('hfxdyn' , hfx_dyn(:,:) ) ! |
---|
| 195 | CALL iom_put ('hfxres' , hfx_res(:,:) ) ! |
---|
| 196 | CALL iom_put ('hfxout' , hfx_out(:,:) ) ! |
---|
| 197 | CALL iom_put ('hfxin' , hfx_in(:,:) ) ! |
---|
| 198 | CALL iom_put ('hfxsnw' , hfx_snw(:,:) ) ! |
---|
| 199 | CALL iom_put ('hfxsub' , hfx_sub(:,:) ) ! |
---|
| 200 | CALL iom_put ('hfxerr' , hfx_err(:,:) ) ! |
---|
| 201 | CALL iom_put ('hfxerr_rem' , hfx_err_rem(:,:) ) ! |
---|
[4688] | 202 | |
---|
[5123] | 203 | CALL iom_put ('hfxsum' , hfx_sum(:,:) ) ! |
---|
| 204 | CALL iom_put ('hfxbom' , hfx_bom(:,:) ) ! |
---|
| 205 | CALL iom_put ('hfxbog' , hfx_bog(:,:) ) ! |
---|
| 206 | CALL iom_put ('hfxdif' , hfx_dif(:,:) ) ! |
---|
| 207 | CALL iom_put ('hfxopw' , hfx_opw(:,:) ) ! |
---|
[6763] | 208 | CALL iom_put ('hfxtur' , fhtur(:,:) * at_i_b(:,:) ) ! turbulent heat flux at ice base |
---|
[5167] | 209 | CALL iom_put ('hfxdhc' , diag_heat(:,:) ) ! Heat content variation in snow and ice |
---|
[5123] | 210 | CALL iom_put ('hfxspr' , hfx_spr(:,:) ) ! Heat content of snow precip |
---|
[6316] | 211 | |
---|
[7293] | 212 | ! MV MP 2016 |
---|
[8085] | 213 | IF ( ln_pnd ) THEN |
---|
[7293] | 214 | CALL iom_put( "iceamp" , at_ip * zswi ) ! melt pond total fraction |
---|
| 215 | CALL iom_put( "icevmp" , vt_ip * zswi ) ! melt pond total volume per unit area |
---|
| 216 | ENDIF |
---|
| 217 | ! END MV MP 2016 |
---|
| 218 | |
---|
[4688] | 219 | |
---|
| 220 | !-------------------------------- |
---|
| 221 | ! Output values for each category |
---|
| 222 | !-------------------------------- |
---|
[6764] | 223 | IF ( iom_use( "iceconc_cat" ) ) CALL iom_put( "iceconc_cat" , a_i * zswi2 ) ! area for categories |
---|
| 224 | IF ( iom_use( "icethic_cat" ) ) CALL iom_put( "icethic_cat" , ht_i * zswi2 ) ! thickness for categories |
---|
| 225 | IF ( iom_use( "snowthic_cat" ) ) CALL iom_put( "snowthic_cat" , ht_s * zswi2 ) ! snow depth for categories |
---|
| 226 | IF ( iom_use( "salinity_cat" ) ) CALL iom_put( "salinity_cat" , sm_i * zswi2 ) ! salinity for categories |
---|
[5517] | 227 | ! ice temperature |
---|
[6764] | 228 | IF ( iom_use( "icetemp_cat" ) ) CALL iom_put( "icetemp_cat", ( SUM( t_i(:,:,:,:), dim=3 ) * r1_nlay_i - rt0 ) * zswi2 ) |
---|
[5517] | 229 | ! snow temperature |
---|
[6764] | 230 | IF ( iom_use( "snwtemp_cat" ) ) CALL iom_put( "snwtemp_cat", ( SUM( t_s(:,:,:,:), dim=3 ) * r1_nlay_s - rt0 ) * zswi2 ) |
---|
[6515] | 231 | ! ice age |
---|
[6764] | 232 | IF ( iom_use( "iceage_cat" ) ) CALL iom_put( "iceage_cat" , o_i * zswi2 * z1_365 ) |
---|
[6515] | 233 | ! brine volume |
---|
[6764] | 234 | IF ( iom_use( "brinevol_cat" ) ) CALL iom_put( "brinevol_cat", bv_i * 100. * zswi2 ) |
---|
[825] | 235 | |
---|
[7293] | 236 | ! MV MP 2016 |
---|
[8085] | 237 | IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN |
---|
[7293] | 238 | IF ( iom_use( "iceamp_cat" ) ) CALL iom_put( "iceamp_cat" , a_ip * zswi2 ) ! melt pond frac for categories |
---|
| 239 | IF ( iom_use( "icevmp_cat" ) ) CALL iom_put( "icevmp_cat" , v_ip * zswi2 ) ! melt pond frac for categories |
---|
| 240 | ENDIF |
---|
| 241 | ! END MV MP 2016 |
---|
| 242 | |
---|
[4688] | 243 | ! ! Create an output files (output.lim.abort.nc) if S < 0 or u > 20 m/s |
---|
| 244 | ! IF( kindic < 0 ) CALL lim_wri_state( 'output.abort' ) |
---|
| 245 | ! not yet implemented |
---|
| 246 | |
---|
[6515] | 247 | CALL wrk_dealloc( jpi, jpj, jpl, zswi2 ) |
---|
[6746] | 248 | CALL wrk_dealloc( jpi, jpj , z2d, zswi ) |
---|
[4161] | 249 | |
---|
| 250 | IF( nn_timing == 1 ) CALL timing_stop('limwri') |
---|
[2777] | 251 | |
---|
[825] | 252 | END SUBROUTINE lim_wri |
---|
| 253 | |
---|
[4161] | 254 | |
---|
| 255 | SUBROUTINE lim_wri_state( kt, kid, kh_i ) |
---|
| 256 | !!--------------------------------------------------------------------- |
---|
| 257 | !! *** ROUTINE lim_wri_state *** |
---|
| 258 | !! |
---|
| 259 | !! ** Purpose : create a NetCDF file named cdfile_name which contains |
---|
| 260 | !! the instantaneous ice state and forcing fields for ice model |
---|
| 261 | !! Used to find errors in the initial state or save the last |
---|
| 262 | !! ocean state in case of abnormal end of a simulation |
---|
| 263 | !! |
---|
| 264 | !! History : |
---|
[6316] | 265 | !! 4.0 ! 2013-06 (C. Rousset) |
---|
[4161] | 266 | !!---------------------------------------------------------------------- |
---|
[6853] | 267 | INTEGER, INTENT( in ) :: kt ! ocean time-step index) |
---|
| 268 | INTEGER, INTENT( in ) :: kid , kh_i |
---|
| 269 | INTEGER :: nz_i, jl |
---|
| 270 | REAL(wp), DIMENSION(jpl) :: jcat |
---|
[4161] | 271 | !!---------------------------------------------------------------------- |
---|
[6853] | 272 | DO jl = 1, jpl |
---|
| 273 | jcat(jl) = REAL(jl) |
---|
| 274 | ENDDO |
---|
| 275 | |
---|
| 276 | CALL histvert( kid, "ncatice", "Ice Categories","", jpl, jcat, nz_i, "up") |
---|
[825] | 277 | |
---|
[6853] | 278 | CALL histdef( kid, "sithic", "Ice thickness" , "m" , & |
---|
[4765] | 279 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 280 | CALL histdef( kid, "siconc", "Ice concentration" , "%" , & |
---|
[4765] | 281 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 282 | CALL histdef( kid, "sitemp", "Ice temperature" , "C" , & |
---|
[4765] | 283 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 284 | CALL histdef( kid, "sivelu", "i-Ice speed " , "m/s" , & |
---|
[4765] | 285 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 286 | CALL histdef( kid, "sivelv", "j-Ice speed " , "m/s" , & |
---|
[4765] | 287 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 288 | CALL histdef( kid, "sistru", "i-Wind stress over ice " , "Pa" , & |
---|
[4765] | 289 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 290 | CALL histdef( kid, "sistrv", "j-Wind stress over ice " , "Pa" , & |
---|
[4765] | 291 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 292 | CALL histdef( kid, "sisflx", "Solar flux over ocean" , "w/m2" , & |
---|
[4765] | 293 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 294 | CALL histdef( kid, "sinflx", "Non-solar flux over ocean" , "w/m2" , & |
---|
[4765] | 295 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 296 | CALL histdef( kid, "isnowpre", "Snow precipitation" , "kg/m2/s", & |
---|
| 297 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 298 | CALL histdef( kid, "sisali", "Ice salinity" , "PSU" , & |
---|
[4765] | 299 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 300 | CALL histdef( kid, "sivolu", "Ice volume" , "m" , & |
---|
[4765] | 301 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 302 | CALL histdef( kid, "sidive", "Ice divergence" , "10-8s-1", & |
---|
[4765] | 303 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 304 | |
---|
[7293] | 305 | ! MV MP 2016 |
---|
[8085] | 306 | IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN |
---|
[7293] | 307 | CALL histdef( kid, "si_amp", "Melt pond fraction" , "%" , & |
---|
| 308 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 309 | CALL histdef( kid, "si_vmp", "Melt pond volume" , "m" , & |
---|
| 310 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
| 311 | ENDIF |
---|
| 312 | ! END MV MP 2016 |
---|
| 313 | |
---|
[6853] | 314 | CALL histdef( kid, "vfxbog", "Ice bottom production" , "m/s" , & |
---|
[4765] | 315 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 316 | CALL histdef( kid, "vfxdyn", "Ice dynamic production" , "m/s" , & |
---|
[4765] | 317 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 318 | CALL histdef( kid, "vfxopw", "Ice open water prod" , "m/s" , & |
---|
[4765] | 319 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 320 | CALL histdef( kid, "vfxsni", "Snow ice production " , "m/s" , & |
---|
[4765] | 321 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 322 | CALL histdef( kid, "vfxres", "Ice prod from limupdate" , "m/s" , & |
---|
[4765] | 323 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 324 | CALL histdef( kid, "vfxbom", "Ice bottom melt" , "m/s" , & |
---|
[4765] | 325 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[6853] | 326 | CALL histdef( kid, "vfxsum", "Ice surface melt" , "m/s" , & |
---|
[4765] | 327 | & jpi, jpj, kh_i, 1, 1, 1, -99, 32, "inst(x)", rdt, rdt ) |
---|
[4161] | 328 | |
---|
[6853] | 329 | CALL histdef( kid, "sithicat", "Ice thickness" , "m" , & |
---|
| 330 | & jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) |
---|
| 331 | CALL histdef( kid, "siconcat", "Ice concentration" , "%" , & |
---|
| 332 | & jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) |
---|
| 333 | CALL histdef( kid, "sisalcat", "Ice salinity" , "" , & |
---|
| 334 | & jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) |
---|
| 335 | CALL histdef( kid, "sitemcat", "Ice temperature" , "C" , & |
---|
| 336 | & jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) |
---|
| 337 | CALL histdef( kid, "snthicat", "Snw thickness" , "m" , & |
---|
| 338 | & jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) |
---|
| 339 | CALL histdef( kid, "sntemcat", "Snw temperature" , "C" , & |
---|
| 340 | & jpi, jpj, kh_i, jpl, 1, jpl, nz_i, 32, "inst(x)", rdt, rdt ) |
---|
| 341 | |
---|
[4161] | 342 | CALL histend( kid, snc4set ) ! end of the file definition |
---|
| 343 | |
---|
[6853] | 344 | CALL histwrite( kid, "sithic", kt, htm_i , jpi*jpj, (/1/) ) |
---|
| 345 | CALL histwrite( kid, "siconc", kt, at_i , jpi*jpj, (/1/) ) |
---|
| 346 | CALL histwrite( kid, "sitemp", kt, tm_i - rt0 , jpi*jpj, (/1/) ) |
---|
| 347 | CALL histwrite( kid, "sivelu", kt, u_ice , jpi*jpj, (/1/) ) |
---|
| 348 | CALL histwrite( kid, "sivelv", kt, v_ice , jpi*jpj, (/1/) ) |
---|
| 349 | CALL histwrite( kid, "sistru", kt, utau_ice , jpi*jpj, (/1/) ) |
---|
| 350 | CALL histwrite( kid, "sistrv", kt, vtau_ice , jpi*jpj, (/1/) ) |
---|
| 351 | CALL histwrite( kid, "sisflx", kt, qsr , jpi*jpj, (/1/) ) |
---|
| 352 | CALL histwrite( kid, "sinflx", kt, qns , jpi*jpj, (/1/) ) |
---|
[4161] | 353 | CALL histwrite( kid, "isnowpre", kt, sprecip , jpi*jpj, (/1/) ) |
---|
[6853] | 354 | CALL histwrite( kid, "sisali", kt, smt_i , jpi*jpj, (/1/) ) |
---|
| 355 | CALL histwrite( kid, "sivolu", kt, vt_i , jpi*jpj, (/1/) ) |
---|
| 356 | CALL histwrite( kid, "sidive", kt, divu_i*1.0e8 , jpi*jpj, (/1/) ) |
---|
[4161] | 357 | |
---|
[7293] | 358 | ! MV MP 2016 |
---|
[8085] | 359 | IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) THEN |
---|
[7293] | 360 | CALL histwrite( kid, "si_amp", kt, at_ip , jpi*jpj, (/1/) ) |
---|
| 361 | CALL histwrite( kid, "si_vmp", kt, vt_ip , jpi*jpj, (/1/) ) |
---|
| 362 | ENDIF |
---|
| 363 | ! END MV MP 2016 |
---|
| 364 | |
---|
[6853] | 365 | CALL histwrite( kid, "vfxbog", kt, wfx_bog , jpi*jpj, (/1/) ) |
---|
| 366 | CALL histwrite( kid, "vfxdyn", kt, wfx_dyn , jpi*jpj, (/1/) ) |
---|
| 367 | CALL histwrite( kid, "vfxopw", kt, wfx_opw , jpi*jpj, (/1/) ) |
---|
| 368 | CALL histwrite( kid, "vfxsni", kt, wfx_sni , jpi*jpj, (/1/) ) |
---|
| 369 | CALL histwrite( kid, "vfxres", kt, wfx_res , jpi*jpj, (/1/) ) |
---|
| 370 | CALL histwrite( kid, "vfxbom", kt, wfx_bom , jpi*jpj, (/1/) ) |
---|
| 371 | CALL histwrite( kid, "vfxsum", kt, wfx_sum , jpi*jpj, (/1/) ) |
---|
[8085] | 372 | IF ( ln_pnd .AND. ( nn_pnd_scheme >= 0 ) ) & |
---|
[8063] | 373 | CALL histwrite( kid, "vfxpnd", kt, wfx_pnd , jpi*jpj, (/1/) ) |
---|
[4333] | 374 | |
---|
[6853] | 375 | CALL histwrite( kid, "sithicat", kt, ht_i , jpi*jpj*jpl, (/1/) ) |
---|
| 376 | CALL histwrite( kid, "siconcat", kt, a_i , jpi*jpj*jpl, (/1/) ) |
---|
| 377 | CALL histwrite( kid, "sisalcat", kt, sm_i , jpi*jpj*jpl, (/1/) ) |
---|
| 378 | CALL histwrite( kid, "sitemcat", kt, tm_i - rt0 , jpi*jpj*jpl, (/1/) ) |
---|
| 379 | CALL histwrite( kid, "snthicat", kt, ht_s , jpi*jpj*jpl, (/1/) ) |
---|
| 380 | CALL histwrite( kid, "sntemcat", kt, tm_su - rt0 , jpi*jpj*jpl, (/1/) ) |
---|
| 381 | |
---|
[4688] | 382 | ! Close the file |
---|
| 383 | ! ----------------- |
---|
| 384 | !CALL histclo( kid ) |
---|
[4161] | 385 | |
---|
| 386 | END SUBROUTINE lim_wri_state |
---|
| 387 | |
---|
[825] | 388 | #else |
---|
| 389 | !!---------------------------------------------------------------------- |
---|
| 390 | !! Default option : Empty module NO LIM sea-ice model |
---|
| 391 | !!---------------------------------------------------------------------- |
---|
| 392 | CONTAINS |
---|
| 393 | SUBROUTINE lim_wri ! Empty routine |
---|
| 394 | END SUBROUTINE lim_wri |
---|
| 395 | #endif |
---|
| 396 | |
---|
| 397 | !!====================================================================== |
---|
| 398 | END MODULE limwri |
---|