- Timestamp:
- 2017-06-08T18:13:32+02:00 (7 years ago)
- Location:
- branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r8152 r8156 108 108 !! v_s | - | Snow volume per unit area | m | 109 109 !! smv_i | - | Sea ice salt content | ppt.m | 110 !! oa_i ! - ! Sea ice areal age content | day|110 !! oa_i ! - ! Sea ice areal age content | s | 111 111 !! e_i ! - ! Ice enthalpy | J/m2 | 112 112 !! - ! q_i_1d ! Ice enthalpy per unit vol. | J/m3 | … … 123 123 !! sm_i ! sm_i_1d | Sea ice bulk salinity ! ppt | 124 124 !! s_i ! s_i_1d | Sea ice salinity profile ! ppt | 125 !! o_i ! - | Sea ice Age ! days|125 !! o_i ! - | Sea ice Age ! s | 126 126 !! t_i ! t_i_1d | Sea ice temperature ! K | 127 127 !! t_s ! t_s_1d | Snow temperature ! K | … … 322 322 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: smv_i !: Sea-Ice Bulk salinity times volume per area (ppt.m) 323 323 ! ! this is an extensive variable that has to be transported 324 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: o_i !: Sea-Ice Age ( days)325 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: oa_i !: Sea-Ice Age times ice area ( days)324 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: o_i !: Sea-Ice Age (s) 325 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: oa_i !: Sea-Ice Age times ice area (s) 326 326 327 327 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: bv_i !: brine volume -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limistate.F90
r6696 r8156 309 309 ht_s(ji,jj,jl) = ht_i(ji,jj,jl) * ( zht_s_ini( zhemis(ji,jj) ) / zht_i_ini( zhemis(ji,jj) ) ) ! snow depth 310 310 sm_i(ji,jj,jl) = zswitch(ji,jj) * zsm_i_ini(zhemis(ji,jj)) ! salinity 311 o_i(ji,jj,jl) = zswitch(ji,jj) * 1._wp ! age (1day)311 o_i(ji,jj,jl) = zswitch(ji,jj) * 0._wp ! age (0 day) 312 312 t_su(ji,jj,jl) = zswitch(ji,jj) * ztm_i_ini(zhemis(ji,jj)) + ( 1._wp - zswitch(ji,jj) ) * rt0 ! surf temp 313 313 -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
r8152 r8156 675 675 END DO 676 676 677 CALL lbc_lnk_multi( diag_sig1 , 'T', 1., diag_sig2 , 'T', 1., & 678 & diag_dssh_dx, 'U', -1., diag_dssh_dy, 'V', -1., & 679 & diag_corstrx, 'U', -1., diag_corstry, 'V', -1., & 680 & diag_intstrx, 'U', -1., diag_intstry, 'V', -1. & 681 & diag_utau_oi, 'U', -1., diag_vtau_oi, 'V', -1. ) 677 CALL lbc_lnk_multi( diag_sig1 , 'T', 1., diag_sig2 , 'T', 1., & 678 & diag_dssh_dx, 'U', -1., diag_dssh_dy, 'V', -1., & 679 & diag_corstrx, 'U', -1., diag_corstry, 'V', -1., & 680 & diag_intstrx, 'U', -1., diag_intstry, 'V', -1. ) 681 682 CALL lbc_lnk_multi( diag_utau_oi, 'U', -1., diag_vtau_oi, 'V', -1. ) 682 683 683 684 ! -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limupdate2.F90
r7506 r8156 156 156 ! ------------------------------------------------- 157 157 DO jl = 1, jpl 158 oa_i(:,:,jl) = oa_i(:,:,jl) + a_i(:,:,jl) * rdt_ice / rday! ice natural aging158 oa_i(:,:,jl) = oa_i(:,:,jl) + a_i(:,:,jl) * rdt_ice ! ice natural aging 159 159 afx_thd(:,:) = afx_thd(:,:) + ( a_i(:,:,jl) - a_i_b(:,:,jl) ) * r1_rdtice 160 160 END DO -
branches/2016/v3_6_CMIP6_ice_diagnostics/NEMOGCM/NEMO/LIM_SRC_3/limwri.F90
r8152 r8156 54 54 ! 55 55 INTEGER :: ii, ji, jj, jk, jl ! dummy loop indices 56 REAL(wp) :: z1_36557 56 REAL(wp) :: z2da, z2db, ztmp, zrho1, zrho2 58 57 REAL(wp), POINTER, DIMENSION(:,:,:) :: zswi2 59 58 REAL(wp), POINTER, DIMENSION(:,:) :: z2d, zswi ! 2D workspace 59 REAL(wp), POINTER, DIMENSION(:,:) :: zfb ! ice freeboard 60 REAL(wp), POINTER, DIMENSION(:,:) :: zamask, zamask15 ! 15% concentration mask 60 61 61 62 ! Global ice diagnostics (SIMIP) … … 89 90 CALL wrk_alloc( jpi, jpj, jpl, zswi2 ) 90 91 CALL wrk_alloc( jpi, jpj , z2d, zswi ) 92 CALL wrk_alloc( jpi, jpj , zfb, zamask, zamask15 ) 91 93 92 94 !----------------------------- 93 95 ! Mean category values 94 96 !----------------------------- 95 z1_365 = 1._wp / 365._wp96 97 97 98 ! brine volume … … 102 103 DO ji = 1, jpi 103 104 zswi(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - epsi06 ) ) ! 1 if ice, 0 if no ice 105 END DO 106 END DO 107 DO jj = 1, jpj 108 DO ji = 1, jpi 109 zamask(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.05 ) ) ! 1 if 5% ice, 0 if less - required to mask thickness and snow depth 110 zamask15(ji,jj) = MAX( 0._wp , SIGN( 1._wp , at_i(ji,jj) - 0.15 ) ) ! 1 if 15% ice, 0 if less 104 111 END DO 105 112 END DO … … 142 149 ENDIF 143 150 ! 144 IF ( iom_use( "miceage" ) ) CALL iom_put( "miceage" , om_i * zswi * z 1_365) ! mean ice age151 IF ( iom_use( "miceage" ) ) CALL iom_put( "miceage" , om_i * zswi * zamask15 ) ! mean ice age 145 152 IF ( iom_use( "micet" ) ) CALL iom_put( "micet" , ( tm_i - rt0 ) * zswi ) ! ice mean temperature 146 153 IF ( iom_use( "icest" ) ) CALL iom_put( "icest" , ( tm_su - rt0 ) * zswi ) ! ice surface temperature … … 239 246 IF ( iom_use( "snwtemp_cat" ) ) CALL iom_put( "snwtemp_cat", ( SUM( t_s(:,:,:,:), dim=3 ) * r1_nlay_s - rt0 ) * zswi2 ) 240 247 ! ice age 241 IF ( iom_use( "iceage_cat" ) ) CALL iom_put( "iceage_cat" , o_i * zswi2 * z1_365 )248 IF ( iom_use( "iceage_cat" ) ) CALL iom_put( "iceage_cat" , o_i * zswi2 ) 242 249 ! brine volume 243 250 IF ( iom_use( "brinevol_cat" ) ) CALL iom_put( "brinevol_cat", bv_i * 100. * zswi2 ) … … 248 255 zrho1 = ( rau0 - rhoic ) / rau0; zrho2 = rhosn / rau0 249 256 250 IF ( iom_use( "icethic" ) ) CALL iom_put( "icethic" , htm_i * z swi) ! Ice thickness257 IF ( iom_use( "icethic" ) ) CALL iom_put( "icethic" , htm_i * zamask ) ! Ice thickness 251 258 IF ( iom_use( "icepres" ) ) CALL iom_put( "icepres" , zswi ) ! Ice presence (1 or 0) 252 IF ( iom_use( "snowthic" ) ) CALL iom_put( "snowthic" , htm_s * z swi) ! Snow thickness259 IF ( iom_use( "snowthic" ) ) CALL iom_put( "snowthic" , htm_s * zamask ) ! Snow thickness 253 260 IF ( iom_use( "icemass" ) ) CALL iom_put( "icemass" , rhoic * vt_i(:,:) * zswi ) ! Ice mass per cell area 254 261 IF ( iom_use( "snomass" ) ) CALL iom_put( "snomass" , rhosn * vt_s(:,:) * zswi ) ! Snow mass per cell area 255 262 IF ( iom_use( "icesnt" ) ) CALL iom_put( "icesnt" , ( tm_si - rt0 ) * zswi ) ! Snow-ice interface temperature 256 263 IF ( iom_use( "icebot" ) ) CALL iom_put( "icebot" , ( t_bo - rt0 ) * zswi ) ! Ice bottom temperature 257 IF ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass" , SUM( smv_i, DIM = 3 ) * rhoic / 1000. * zswi ) ! Mass of salt in sea ice per cell area 258 IF ( iom_use( "icefb" ) ) CALL iom_put( "icefb" , ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) * zswi ) ! Ice freeboard 259 264 IF ( iom_use( "icesmass" ) ) CALL iom_put( "icesmass" , SUM( smv_i, DIM = 3 ) * rhoic * 1.0e-3 * zswi ) ! Mass of salt in sea ice per cell area 265 IF ( iom_use( "icefb" ) ) THEN 266 zfb(:,:) = ( zrho1 * htm_i(:,:) - zrho2 * htm_s(:,:) ) * zswi(:,:) 267 WHERE( zfb < 0._wp ) ; zfb = 0._wp ; END WHERE 268 CALL iom_put( "icefb" , zfb ) ! Ice freeboard 269 ENDIF 260 270 IF ( iom_use( "dmithd" ) ) CALL iom_put( "dmithd" , - wfx_bog - wfx_bom - wfx_sum & ! Sea-ice mass change from thermodynamics 261 271 & - wfx_sni - wfx_opw - wfx_res ) … … 571 581 CALL wrk_dealloc( jpi, jpj, jpl, zswi2 ) 572 582 CALL wrk_dealloc( jpi, jpj , z2d, zswi ) 583 CALL wrk_dealloc( jpi, jpj , zfb, zamask, zamask15 ) 573 584 574 585 IF( nn_timing == 1 ) CALL timing_stop('limwri')
Note: See TracChangeset
for help on using the changeset viewer.