Changeset 8569
- Timestamp:
- 2017-09-27T18:40:13+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/ice.F90
r8564 r8569 106 106 !! v_i | - | Ice volume per unit area | m | 107 107 !! v_s | - | Snow volume per unit area | m | 108 !! sv_i | - | Sea ice salt content | ppt.m |108 !! sv_i | - | Sea ice salt content | ppt.m | 109 109 !! oa_i ! - ! Sea ice areal age content | s | 110 110 !! e_i ! - ! Ice enthalpy | J/m2 | … … 356 356 357 357 !!---------------------------------------------------------------------- 358 !! * Moments for advection359 !!----------------------------------------------------------------------360 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sxopw, syopw, sxxopw, syyopw, sxyopw !: open water in sea ice361 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxice, syice, sxxice, syyice, sxyice !: ice thickness362 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxsn , sysn , sxxsn , syysn , sxysn !: snow thickness363 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxa , sya , sxxa , syya , sxya !: lead fraction364 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxc0 , syc0 , sxxc0 , syyc0 , sxyc0 !: snow thermal content365 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxsal, sysal, sxxsal, syysal, sxysal !: ice salinity366 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxage, syage, sxxage, syyage, sxyage !: ice age367 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: sxe , sye , sxxe , syye , sxye !: ice layers heat content368 ! MV MP 2016369 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxap , syap , sxxap , syyap , sxyap !: melt pond fraction370 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxvp , syvp , sxxvp , syyvp , sxyvp !: melt pond volume371 ! END MV MP 2016372 373 !!----------------------------------------------------------------------374 358 !! * Old values of global variables 375 359 !!---------------------------------------------------------------------- … … 444 428 & wfx_snw(jpi,jpj) , wfx_snw_dyn(jpi,jpj) , wfx_snw_sum(jpi,jpj) , wfx_snw_sub(jpi,jpj) , & 445 429 & wfx_ice(jpi,jpj) , wfx_sub (jpi,jpj) , wfx_ice_sub(jpi,jpj) , wfx_lam (jpi,jpj) , & 446 ! MV MP 2016447 430 & wfx_pnd(jpi,jpj) , & 448 ! END MV MP 2016449 431 & wfx_bog(jpi,jpj) , wfx_dyn(jpi,jpj) , wfx_bom(jpi,jpj) , wfx_sum(jpi,jpj) , & 450 432 & wfx_res(jpi,jpj) , wfx_sni(jpi,jpj) , wfx_opw(jpi,jpj) , wfx_spr(jpi,jpj) , & … … 477 459 ALLOCATE( t_i(jpi,jpj,nlay_i,jpl) , e_i(jpi,jpj,nlay_i,jpl) , sz_i(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) ) 478 460 479 ! MV MP 2016480 461 ii = ii + 1 481 462 ALLOCATE( a_ip(jpi,jpj,jpl) , v_ip(jpi,jpj,jpl) , a_ip_frac(jpi,jpj,jpl) , & … … 483 464 ii = ii + 1 484 465 ALLOCATE( at_ip(jpi,jpj) , vt_ip(jpi,jpj) , STAT = ierr(ii) ) 485 ! END MV MP 2016486 487 ! * Moments for advection488 ii = ii + 1489 ALLOCATE( sxopw(jpi,jpj) , syopw(jpi,jpj) , sxxopw(jpi,jpj) , syyopw(jpi,jpj) , sxyopw(jpi,jpj) , STAT=ierr(ii) )490 ii = ii + 1491 ALLOCATE( sxice(jpi,jpj,jpl) , syice(jpi,jpj,jpl) , sxxice(jpi,jpj,jpl) , syyice(jpi,jpj,jpl) , sxyice(jpi,jpj,jpl) , &492 & sxsn (jpi,jpj,jpl) , sysn (jpi,jpj,jpl) , sxxsn (jpi,jpj,jpl) , syysn (jpi,jpj,jpl) , sxysn (jpi,jpj,jpl) , &493 & STAT=ierr(ii) )494 ii = ii + 1495 ALLOCATE( sxa (jpi,jpj,jpl) , sya (jpi,jpj,jpl) , sxxa (jpi,jpj,jpl) , syya (jpi,jpj,jpl) , sxya (jpi,jpj,jpl) , &496 & sxc0 (jpi,jpj,jpl) , syc0 (jpi,jpj,jpl) , sxxc0 (jpi,jpj,jpl) , syyc0 (jpi,jpj,jpl) , sxyc0 (jpi,jpj,jpl) , &497 & sxsal(jpi,jpj,jpl) , sysal(jpi,jpj,jpl) , sxxsal(jpi,jpj,jpl) , syysal(jpi,jpj,jpl) , sxysal(jpi,jpj,jpl) , &498 & sxage(jpi,jpj,jpl) , syage(jpi,jpj,jpl) , sxxage(jpi,jpj,jpl) , syyage(jpi,jpj,jpl) , sxyage(jpi,jpj,jpl) , &499 & STAT=ierr(ii) )500 ii = ii + 1501 ALLOCATE( sxe (jpi,jpj,nlay_i,jpl) , sye (jpi,jpj,nlay_i,jpl) , sxxe(jpi,jpj,nlay_i,jpl) , &502 & syye(jpi,jpj,nlay_i,jpl) , sxye(jpi,jpj,nlay_i,jpl) , STAT=ierr(ii) )503 504 ! MV MP 2016505 ii = ii + 1506 ALLOCATE( sxap(jpi,jpj,jpl) , syap(jpi,jpj,jpl) , sxxap(jpi,jpj,jpl) , syyap(jpi,jpj,jpl) , sxyap(jpi,jpj,jpl) , &507 & sxvp(jpi,jpj,jpl) , syvp(jpi,jpj,jpl) , sxxvp(jpi,jpj,jpl) , syyvp(jpi,jpj,jpl) , sxyvp(jpi,jpj,jpl) , &508 & STAT = ierr(ii) )509 ! END MV MP 2016510 466 511 467 ! * Old values of global variables -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv.F90
r8564 r8569 111 111 IF( iom_use('destrp') ) CALL iom_put( "destrp" , diag_trp_es ) ! advected snw enthalpy (W/m2) 112 112 113 IF( lrst_ice ) THEN !* write Prather fields in the restart file114 IF( ln_adv_Pra ) CALL adv_pra_rst( 'WRITE', kt )115 ENDIF116 117 113 ! controls 118 114 IF( ln_icediachk ) CALL ice_cons_hsm(1, 'icedyn_adv', rdiag_v, rdiag_s, rdiag_t, rdiag_fv, rdiag_fs, rdiag_ft) ! conservation … … 165 161 IF( ioptio /= 1 ) CALL ctl_stop( 'ice_dyn_adv_init: choose one and only one ice adv. scheme (ln_adv_Pra or ln_adv_UMx)' ) 166 162 ! 167 IF( ln_adv_Pra ) CALL adv_pra_ rst( 'READ' )!* read or initialize all required files163 IF( ln_adv_Pra ) CALL adv_pra_init !* read or initialize all required files 168 164 ! 169 165 END SUBROUTINE ice_dyn_adv_init -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icedyn_adv_pra.F90
r8564 r8569 29 29 30 30 PUBLIC ice_dyn_adv_pra ! called by icedyn_adv 31 PUBLIC adv_pra_rst ! called by icedyn_adv 32 31 PUBLIC adv_pra_init ! called by icedyn_adv 32 33 ! Moments for advection 34 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: sxopw, syopw, sxxopw, syyopw, sxyopw ! open water in sea ice 35 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxice, syice, sxxice, syyice, sxyice ! ice thickness 36 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxsn , sysn , sxxsn , syysn , sxysn ! snow thickness 37 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxa , sya , sxxa , syya , sxya ! lead fraction 38 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxc0 , syc0 , sxxc0 , syyc0 , sxyc0 ! snow thermal content 39 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxsal, sysal, sxxsal, syysal, sxysal ! ice salinity 40 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxage, syage, sxxage, syyage, sxyage ! ice age 41 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxap , syap , sxxap , syyap , sxyap ! melt pond fraction 42 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sxvp , syvp , sxxvp , syyvp , sxyvp ! melt pond volume 43 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: sxe , sye , sxxe , syye , sxye ! ice layers heat content 44 ! 33 45 !! * Substitutions 34 46 # include "vectopt_loop_substitute.h90" … … 246 258 DEALLOCATE( zarea , z0opw , z0ice, z0snw , z0ai , z0es , z0smi , z0oi , z0ap , z0vp , z0ei ) 247 259 ! 260 IF( lrst_ice ) CALL adv_pra_rst( 'WRITE', kt ) !* write Prather fields in the restart file 261 ! 248 262 END SUBROUTINE ice_dyn_adv_pra 249 263 … … 594 608 END SUBROUTINE adv_y 595 609 610 SUBROUTINE adv_pra_init 611 !!------------------------------------------------------------------- 612 !! *** ROUTINE adv_pra_init *** 613 !! 614 !! ** Purpose : allocate and initialize arrays for Prather advection 615 !!------------------------------------------------------------------- 616 INTEGER :: ierr 617 !!------------------------------------------------------------------- 618 ALLOCATE( sxopw(jpi,jpj) , syopw(jpi,jpj) , sxxopw(jpi,jpj) , syyopw(jpi,jpj) , sxyopw(jpi,jpj) , & 619 & sxice(jpi,jpj,jpl) , syice(jpi,jpj,jpl) , sxxice(jpi,jpj,jpl) , syyice(jpi,jpj,jpl) , sxyice(jpi,jpj,jpl) , & 620 & sxsn (jpi,jpj,jpl) , sysn (jpi,jpj,jpl) , sxxsn (jpi,jpj,jpl) , syysn (jpi,jpj,jpl) , sxysn (jpi,jpj,jpl) , & 621 & sxa (jpi,jpj,jpl) , sya (jpi,jpj,jpl) , sxxa (jpi,jpj,jpl) , syya (jpi,jpj,jpl) , sxya (jpi,jpj,jpl) , & 622 & sxc0 (jpi,jpj,jpl) , syc0 (jpi,jpj,jpl) , sxxc0 (jpi,jpj,jpl) , syyc0 (jpi,jpj,jpl) , sxyc0 (jpi,jpj,jpl) , & 623 & sxsal(jpi,jpj,jpl) , sysal(jpi,jpj,jpl) , sxxsal(jpi,jpj,jpl) , syysal(jpi,jpj,jpl) , sxysal(jpi,jpj,jpl) , & 624 & sxage(jpi,jpj,jpl) , syage(jpi,jpj,jpl) , sxxage(jpi,jpj,jpl) , syyage(jpi,jpj,jpl) , sxyage(jpi,jpj,jpl) , & 625 & sxap(jpi,jpj,jpl) , syap (jpi,jpj,jpl) , sxxap (jpi,jpj,jpl) , syyap (jpi,jpj,jpl) , sxyap (jpi,jpj,jpl) , & 626 & sxvp(jpi,jpj,jpl) , syvp (jpi,jpj,jpl) , sxxvp (jpi,jpj,jpl) , syyvp (jpi,jpj,jpl) , sxyvp (jpi,jpj,jpl) , & 627 & sxe (jpi,jpj,nlay_i,jpl) , sye (jpi,jpj,nlay_i,jpl) , sxxe(jpi,jpj,nlay_i,jpl) , & 628 & syye(jpi,jpj,nlay_i,jpl) , sxye(jpi,jpj,nlay_i,jpl) , & 629 & STAT = ierr ) 630 ! 631 IF( lk_mpp ) CALL mpp_sum( ierr ) 632 IF( ierr /= 0 ) CALL ctl_stop('STOP', 'adv_pra_init : unable to allocate ice arrays for Prather advection scheme') 633 ! 634 CALL adv_pra_rst( 'READ' ) !* read or initialize all required files 635 ! 636 END SUBROUTINE adv_pra_init 637 596 638 SUBROUTINE adv_pra_rst( cdrw, kt ) 597 639 !!--------------------------------------------------------------------- … … 713 755 sxyage(:,:,jl)= z2d(:,:) 714 756 END DO 715 ! MV MP 2016716 757 IF ( nn_pnd_scheme > 0 ) THEN 717 758 DO jl = 1, jpl … … 750 791 END DO 751 792 ENDIF 752 ! END MV MP 2016753 793 754 794 CALL iom_get( numrir, jpdom_autoglo, 'sxopw ' , sxopw ) … … 793 833 syyc0 (:,:,:) = 0._wp ; syye (:,:,:,:) = 0._wp ; syysal (:,:,:) = 0._wp ; syyage (:,:,:) = 0._wp 794 834 sxyc0 (:,:,:) = 0._wp ; sxye (:,:,:,:) = 0._wp ; sxysal (:,:,:) = 0._wp ; sxyage (:,:,:) = 0._wp 795 ! MV MP 2016796 835 IF ( nn_pnd_scheme > 0 ) THEN 797 836 sxap (:,:,:) = 0._wp ; sxvp (:,:,:) = 0._wp … … 801 840 sxyap (:,:,:) = 0._wp ; sxyvp (:,:,:) = 0._wp 802 841 ENDIF 803 ! END MV MP 2016804 842 ENDIF 805 843 ELSE !* Start from rest … … 816 854 syyc0 (:,:,:) = 0._wp ; syye (:,:,:,:) = 0._wp ; syysal (:,:,:) = 0._wp ; syyage (:,:,:) = 0._wp 817 855 sxyc0 (:,:,:) = 0._wp ; sxye (:,:,:,:) = 0._wp ; sxysal (:,:,:) = 0._wp ; sxyage (:,:,:) = 0._wp 818 ! MV MP 2016819 856 IF ( nn_pnd_scheme > 0 ) THEN 820 857 sxap (:,:,:) = 0._wp ; sxvp (:,:,:) = 0._wp … … 824 861 sxyap (:,:,:) = 0._wp ; sxyvp (:,:,:) = 0._wp 825 862 ENDIF 826 ! END MV MP 2016827 863 ENDIF 828 864 ! … … 953 989 END DO 954 990 END DO 955 ! MV MP 2016956 991 IF ( nn_pnd_scheme > 0 ) THEN 957 992 DO jl = 1, jpl
Note: See TracChangeset
for help on using the changeset viewer.