Changeset 11529


Ignore:
Timestamp:
2019-09-10T18:35:59+02:00 (22 months ago)
Author:
mathiot
Message:

ENHANCE-02_ISF: fixes for ice sheet coupling (ticket #2142)

Location:
NEMO/branches/2019/ENHANCE-02_ISF_nemo
Files:
10 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/cfgs/SHARED/namelist_ref

    r11523 r11529  
    485485         !* 'bg03' case 
    486486         sn_isfpar_Leff = 'isfmlt_par',       0        ,'Leff'     ,  .false.    , .true.  , 'yearly'  ,    ''    ,   ''     ,    '' 
    487    ! 
    488    ! ---------------- ice sheet coupling ------------------------------- 
    489    ! 
    490    ln_isfcpl = .false. 
    491       nn_drown       = 10        ! number of iteration of the extrapolation loop (fill the new wet cells) 
    492       ln_isfcpl_cons = .false. 
     487      ! 
     488      ! ---------------- ice sheet coupling ------------------------------- 
     489      ! 
     490      ln_isfcpl = .false. 
     491         nn_drown       = 10        ! number of iteration of the extrapolation loop (fill the new wet cells) 
     492         ln_isfcpl_cons = .false. 
    493493/ 
    494494!----------------------------------------------------------------------- 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/DIA/diahsb.F90

    r11521 r11529  
    288288              ! if ice sheet/oceqn coupling, need to mask ini variables here (mask could change at the next NEMO instance). 
    289289               e3t_ini   (:,:,jk) = e3t_n(:,:,jk)                      * tmask(:,:,jk)  ! initial vertical scale factors 
     290               tmask_ini (:,:,jk) = tmask(:,:,jk)                                       ! initial mask 
    290291               hc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_tem) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial heat content 
    291292               sc_loc_ini(:,:,jk) = tsn(:,:,jk,jp_sal) * e3t_n(:,:,jk) * tmask(:,:,jk)  ! initial salt content 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/DIA/diawri.F90

    r11521 r11529  
    925925         END IF 
    926926      END IF 
    927       DO jk = 1,jpk 
    928          zisfdebug(:,:,jk) = risfcpl_cons_vol(:,:,jk) * rdt_iscpl / e1e2t(:,:) 
    929       END DO 
    930       CALL iom_rstput( 0, 0, inum, 'isfdebug', zisfdebug) 
    931927      IF( ALLOCATED(ahtu) ) THEN 
    932928         CALL iom_rstput( 0, 0, inum,  'ahtu', ahtu              )    ! aht at u-point 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/DYN/divhor.F90

    r11521 r11529  
    100100      !  
    101101#endif 
    102       CALL debug('isfdivdebug 0',hdivn) 
    103       IF( ln_isf .OR. ll_isfcpl_cons )   CALL isf_hdiv( kt, hdivn )      !==  ice shelf  ==!   (update hdivn field) 
    104       CALL debug('isfdivdebug 3',hdivn) 
     102      ! 
     103      IF( ln_isf .OR. ln_isfcpl )   CALL isf_hdiv( kt, hdivn )      !==  ice shelf  ==!   (update hdivn field) 
    105104      ! 
    106105      CALL lbc_lnk( 'divhor', hdivn, 'T', 1. )   !   (no sign change) 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/DYN/dynspg_ts.F90

    r11521 r11529  
    647647      IF( ll_isfcpl_cons ) THEN 
    648648         zssh_frc(:,:) = zssh_frc(:,:) + risfcpl_cons_ssh(:,:) 
     649      END IF 
     650      ! 
     651      IF( ln_isfcpl .AND. ln_rstart .AND. kt == nit000 ) THEN 
     652         zssh_frc(:,:) = zssh_frc(:,:) + risfcpl_ssh(:,:) 
    649653      END IF 
    650654      ! 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isf.F90

    r11521 r11529  
    101101   INTEGER , PUBLIC                                        ::   nstp_iscpl   !: 
    102102   REAL(wp), PUBLIC                                        ::   rdt_iscpl    !:  
    103    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   risfcpl_cons_ssh, risfcpl_cons_ssh_b               !: 
     103   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:)     ::   risfcpl_ssh, risfcpl_cons_ssh, risfcpl_cons_ssh_b               !: 
    104104   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   ::   risfcpl_vol, risfcpl_cons_vol, risfcpl_cons_vol_b  !: 
    105105   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) ::   risfcpl_tsc, risfcpl_cons_tsc, risfcpl_cons_tsc_b  !: 
     
    185185      ierr = 0 
    186186      ! 
    187       ALLOCATE( risfcpl_tsc(jpi,jpj,jpk,jpts)      , risfcpl_vol(jpi,jpj,jpk)      ,             & 
     187      ALLOCATE( risfcpl_ssh(jpi,jpj), risfcpl_tsc(jpi,jpj,jpk,jpts)      , risfcpl_vol(jpi,jpj,jpk)      ,             & 
    188188         &      risfcpl_cons_tsc(jpi,jpj,jpk,jpts) , risfcpl_cons_vol(jpi,jpj,jpk) ,             & 
    189189         &      risfcpl_cons_tsc_b(jpi,jpj,jpk,jpts) , risfcpl_cons_vol_b(jpi,jpj,jpk),          & 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfhdiv.F90

    r11521 r11529  
    3030      INTEGER, INTENT(in) :: kt 
    3131      ! 
    32       IF (lwp) WRITE(numout,*) ' isfdiv start' 
    33       FLUSH(numout) 
    34       ! 
    3532      IF ( ln_isf ) THEN 
    3633         ! 
     
    4744         ! 
    4845         ! correct divergence only for the first time step 
    49          !IF ( kt == nit000 ) CALL isf_hdiv_cpl(risfcpl_vol, phdiv) 
     46         IF ( kt == nit000 ) CALL isf_hdiv_cpl(risfcpl_vol, phdiv) 
    5047         ! 
    5148         ! correct divergence every time step to remove any trend due to coupling 
    52          IF ( ll_isfcpl_cons ) CALL isf_hdiv_cpl(risfcpl_cons_vol, risfcpl_cons_vol_b, phdiv) 
     49         IF ( ll_isfcpl_cons ) CALL isf_hdiv_cpl(risfcpl_cons_vol, phdiv) 
    5350         ! 
    5451      END IF 
    55       IF (lwp) WRITE(numout,*) ' isfdiv end' 
    56       FLUSH(numout) 
    5752      ! 
    5853   END SUBROUTINE isf_hdiv 
     
    10297   END SUBROUTINE isf_hdiv_mlt 
    10398 
    104    SUBROUTINE isf_hdiv_cpl(pqvol, pqvol_b, phdiv) 
     99   SUBROUTINE isf_hdiv_cpl(pqvol, phdiv) 
    105100      !!---------------------------------------------------------------------- 
    106101      !!                  ***  SUBROUTINE isf_hdiv_cpl  *** 
     
    114109      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout) :: phdiv 
    115110      !!---------------------------------------------------------------------- 
    116       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) :: pqvol, pqvol_b 
     111      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(in   ) :: pqvol 
    117112      !!---------------------------------------------------------------------- 
    118113      INTEGER :: jk 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/ISF/isfstp.F90

    r11521 r11529  
    104104      END IF 
    105105 
    106       IF ( ll_isfcpl ) THEN 
    107  
     106      IF ( ln_isfcpl ) THEN 
     107         !  
    108108         IF (lrst_oce) CALL isfcpl_rst_write(kt) 
    109  
     109         ! 
    110110      END IF 
    111111      ! 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/TRA/traisf.F90

    r11523 r11529  
    4646      !!---------------------------------------------------------------------- 
    4747      ! 
    48       IF( ln_timing )   CALL timing_start('tra_sbc') 
     48      IF( ln_timing )   CALL timing_start('tra_isf') 
    4949      ! 
    5050      IF (ln_isf) THEN 
     
    6161      IF ( ll_isfcpl ) THEN 
    6262         ! 
    63 !         IF ( kt == nit000 ) CALL tra_isf_cpl(risfcpl_tsc, tsa) 
     63         IF ( kt == nit000 ) CALL tra_isf_cpl(risfcpl_tsc, tsa) 
    6464         ! 
    6565         ! ensure 0 trend due to unconservation of the ice shelf coupling 
     
    130130      ! 
    131131      DO jk = 1,jpk 
    132          ptsa(:,:,jk,jp_tem) = ptsa(:,:,jk,jp_tem) - ptsc(:,:,jk,jp_tem) * r1_e1e2t(:,:) / e3t_n(:,:,jk) 
    133          ptsa(:,:,jk,jp_sal) = ptsa(:,:,jk,jp_sal) - ptsc(:,:,jk,jp_sal) * r1_e1e2t(:,:) / e3t_n(:,:,jk) 
     132         ptsa(:,:,jk,jp_tem) = ptsa(:,:,jk,jp_tem) + ptsc(:,:,jk,jp_tem) * r1_e1e2t(:,:) / e3t_n(:,:,jk) 
     133         ptsa(:,:,jk,jp_sal) = ptsa(:,:,jk,jp_sal) + ptsc(:,:,jk,jp_sal) * r1_e1e2t(:,:) / e3t_n(:,:,jk) 
    134134      END DO 
    135135      ! 
  • NEMO/branches/2019/ENHANCE-02_ISF_nemo/src/OCE/step.F90

    r11521 r11529  
    114114      IF( ln_apr_dyn )   CALL sbc_apr ( kstp )                   ! atmospheric pressure (NB: call before bdy_dta which needs ssh_ib)  
    115115      IF( ln_bdy     )   CALL bdy_dta ( kstp, time_offset=+1 )   ! update dynamic & tracer data at open boundaries 
    116       IF( ln_isf     .OR. ll_isfcpl )   CALL isf_stp ( kstp ) 
     116      IF( ln_isf     .OR. ln_isfcpl )   CALL isf_stp ( kstp ) 
    117117                         CALL sbc     ( kstp )                   ! Sea Boundary Condition (including sea-ice) 
    118118 
     
    242242                         CALL tra_sbc       ( kstp )  ! surface boundary condition 
    243243      IF( ln_traqsr  )   CALL tra_qsr       ( kstp )  ! penetrative solar radiation qsr 
    244       IF( ln_isf .OR. ll_isfcpl ) CALL tra_isf      ( kstp )  ! ice shelf heat flux 
     244      IF( ln_isf .OR. ln_isfcpl ) CALL tra_isf ( kstp )  ! ice shelf heat flux 
    245245      IF( ln_trabbc  )   CALL tra_bbc       ( kstp )  ! bottom heat flux 
    246246      IF( ln_trabbl  )   CALL tra_bbl       ( kstp )  ! advective (and/or diffusive) bottom boundary layer scheme 
Note: See TracChangeset for help on using the changeset viewer.