New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
Changeset 13920 – NEMO

Changeset 13920


Ignore:
Timestamp:
2020-11-30T13:56:26+01:00 (4 years ago)
Author:
vancop
Message:

commit everything but VP

Location:
NEMO/branches/2020/SI3_vp_rheology
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/SI3_vp_rheology/cfgs/SHARED/namelist_ice_ref

    r13474 r13920  
    9898      rn_relast     =   0.333         !     ratio of elastic timescale to ice time step: Telast = dt_ice * rn_relast  
    9999                                      !        advised value: 1/3 (nn_nevp=100) or 1/9 (nn_nevp=300) 
     100   ln_rhg_VP        = .false.         !  VP rheology 
     101   nn_nout_vp       = 10              !     number of outer iterations 
     102   nn_ninn_vp       = 1500            !     number of inner iterations 
     103   ln_zebra_vp      = .true.          !     activate zebra solver 
     104   rn_relaxu_vp     = 0.95            !     relaxation factor for u-velocity 
     105   rn_relaxv_vp     = 0.95            !     relaxation factor for v-velocity 
     106   rn_uerr_max_vp   = 0.80            !     maximum error on velocity 
     107   rn_uerr_min_vp   = 1.0e-04         !     velocity to decide convergence 
     108   nn_cvgchk_vp     = 5               !     iteration step for convergence check 
    100109   nn_rhg_chkcvg    =   0             !  check convergence of rheology 
    101110                                      !     = 0  no check 
  • NEMO/branches/2020/SI3_vp_rheology/src/ICE/ice.F90

    r13641 r13920  
    150150   ! 
    151151   !                                     !!** ice-rheology namelist (namdyn_rhg) ** 
     152   ! -- evp 
    152153   LOGICAL , PUBLIC ::   ln_aEVP          !: using adaptive EVP (T or F)  
    153    REAL(wp), PUBLIC ::   rn_creepl        !: creep limit : has to be under 1.0e-9 
     154   REAL(wp), PUBLIC ::   rn_creepl        !: creep limit (has to be low enough, circa 10-9 m/s, depending on rheology) 
    154155   REAL(wp), PUBLIC ::   rn_ecc           !: eccentricity of the elliptical yield curve 
    155156   INTEGER , PUBLIC ::   nn_nevp          !: number of iterations for subcycling 
    156157   REAL(wp), PUBLIC ::   rn_relast        !: ratio => telast/rDt_ice (1/3 or 1/9 depending on nb of subcycling nevp)  
    157158   INTEGER , PUBLIC ::   nn_rhg_chkcvg    !: check ice rheology convergence  
     159   ! -- vp 
     160   INTEGER , PUBLIC ::   nn_nout_vp       !: Number of outer iterations 
     161   INTEGER , PUBLIC ::   nn_ninn_vp       !: Number of inner iterations (linear system solver) 
     162   LOGICAL , PUBLIC ::   ln_zebra_vp      !: activate zebra (solve the linear system problem every odd j-band, then one every even one) 
     163   REAL(wp), PUBLIC ::   rn_relaxu_vp     !: U-relaxation factor (MV: can probably be merged with V-factor once ok) 
     164   REAL(wp), PUBLIC ::   rn_relaxv_vp     !: V-relaxation factor  
     165   REAL(wp), PUBLIC ::   rn_uerr_max_vp   !: maximum velocity error, above which a forcing error is considered and solver is stopped 
     166   REAL(wp), PUBLIC ::   rn_uerr_min_vp   !: minimum velocity error, beyond which convergence is assumed 
     167   INTEGER , PUBLIC ::   nn_cvgchk_vp     !: Number of iterations every each convergence is checked 
    158168   ! 
    159169   !                                     !!** ice-advection namelist (namdyn_adv) ** 
  • NEMO/branches/2020/SI3_vp_rheology/src/ICE/icedyn_rhg.F90

    r13472 r13920  
    1717   USE ice            ! sea-ice: variables 
    1818   USE icedyn_rhg_evp ! sea-ice: EVP rheology 
     19   USE icedyn_rhg_vp  ! sea-ice: VP rheology 
    1920   USE icectl         ! sea-ice: control prints 
    2021   ! 
     
    3435   INTEGER, PARAMETER ::   np_rhgEVP = 1   ! EVP rheology 
    3536!! INTEGER, PARAMETER ::   np_rhgEAP = 2   ! EAP rheology 
     37   INTEGER, PARAMETER ::   np_rhgVP  = 3   ! VP rheology 
    3638 
    3739   ! ** namelist (namrhg) ** 
    3840   LOGICAL ::   ln_rhg_EVP       ! EVP rheology 
     41   LOGICAL ::   ln_rhg_VP        ! EVP rheology 
    3942   ! 
    4043   !!---------------------------------------------------------------------- 
     
    7780         !                             !------------------------! 
    7881         CALL ice_dyn_rhg_evp( kt, Kmm, stress1_i, stress2_i, stress12_i, shear_i, divu_i, delta_i ) 
    79          !          
     82         !         
     83         !                             !---------------------------------------------! 
     84      CASE( np_rhgVP  )                ! Viscous-Plastic rheology                    ! 
     85         !                             !---------------------------------------------! 
     86         CALL ice_dyn_rhg_vp ( kt, shear_i, divu_i, delta_i ) 
    8087      END SELECT 
    8188      ! 
    8289      IF( lrst_ice ) THEN                       !* write EVP fields in the restart file 
    8390         IF( ln_rhg_EVP )   CALL rhg_evp_rst( 'WRITE', kt ) 
     91         ! MV note: no restart needed for VP as there is no time equation for stress tensor 
    8492      ENDIF 
    8593      ! 
     
    108116      INTEGER ::   ios, ioptio   ! Local integer output status for namelist read 
    109117      !! 
    110       NAMELIST/namdyn_rhg/  ln_rhg_EVP, ln_aEVP, rn_creepl, rn_ecc , nn_nevp, rn_relast, nn_rhg_chkcvg 
     118      NAMELIST/namdyn_rhg/  ln_rhg_EVP, ln_aEVP, rn_creepl, rn_ecc , nn_nevp, rn_relast, nn_rhg_chkcvg,   &    !-- evp 
     119    &                       ln_rhg_VP, nn_nout_vp, nn_ninn_vp, ln_zebra_vp, rn_relaxu_vp, rn_relaxv_vp, rn_uerr_max_vp, rn_uerr_min_vp, nn_cvgchk_vp  !-- vp  
    111120      !!------------------------------------------------------------------- 
    112121      ! 
     
    124133         WRITE(numout,*) '      rheology EVP (icedyn_rhg_evp)                        ln_rhg_EVP    = ', ln_rhg_EVP 
    125134         WRITE(numout,*) '         use adaptive EVP (aEVP)                           ln_aEVP       = ', ln_aEVP 
    126          WRITE(numout,*) '         creep limit                                       rn_creepl     = ', rn_creepl 
    127          WRITE(numout,*) '         eccentricity of the elliptical yield curve        rn_ecc        = ', rn_ecc 
     135         WRITE(numout,*) '         creep limit                                       rn_creepl     = ', rn_creepl ! also used by vp 
     136         WRITE(numout,*) '         eccentricity of the elliptical yield curve        rn_ecc        = ', rn_ecc    ! also used by vp 
    128137         WRITE(numout,*) '         number of iterations for subcycling               nn_nevp       = ', nn_nevp 
    129138         WRITE(numout,*) '         ratio of elastic timescale over ice time step     rn_relast     = ', rn_relast 
    130          WRITE(numout,*) '      check convergence of rheology                        nn_rhg_chkcvg = ', nn_rhg_chkcvg 
     139         WRITE(numout,*) '      check convergence of rheology                        nn_rhg_chkcvg = ', nn_rhg_chkcvg ! maybe duplicates nn_cvgchk_vp ? 
     140         WRITE(numout,*) '      rheology VP     (icedyn_rhg_VP)                      ln_rhg_VP     = ', ln_rhg_VP 
     141         WRITE(numout,*) '         number of outer iterations                        nn_nout_vp    = ', nn_nout_vp 
     142         WRITE(numout,*) '         number of inner iterations                        nn_ninn_vp    = ', nn_ninn_vp 
     143         WRITE(numout,*) '         activate zebra solver                             ln_zebra_vp   = ', ln_zebra_vp 
     144         WRITE(numout,*) '         relaxation factor for u                           rn_relaxu_vp  = ', rn_relaxu_vp 
     145         WRITE(numout,*) '         relaxation factor for v                           rn_relaxv_vp  = ', rn_relaxv_vp 
     146         WRITE(numout,*) '         maximum error on velocity                         rn_uerr_max_vp = ', rn_uerr_max_vp 
     147         WRITE(numout,*) '         velocity to decide convergence                    rn_uerr_min_vp = ', rn_uerr_min_vp 
     148         WRITE(numout,*) '         iteration step for convergence check              nn_cvgchk_vp   = ', nn_cvgchk_vp 
    131149         IF    ( nn_rhg_chkcvg == 0 ) THEN   ;   WRITE(numout,*) '         no check' 
    132150         ELSEIF( nn_rhg_chkcvg == 1 ) THEN   ;   WRITE(numout,*) '         check cvg at the main time step' 
     
    139157      IF( ln_rhg_EVP ) THEN   ;   ioptio = ioptio + 1   ;   nice_rhg = np_rhgEVP    ;   ENDIF 
    140158!!    IF( ln_rhg_EAP ) THEN   ;   ioptio = ioptio + 1   ;   nice_rhg = np_rhgEAP    ;   ENDIF 
     159      IF( ln_rhg_VP  ) THEN   ;   ioptio = ioptio + 1   ;   nice_rhg = np_rhgVP     ;   ENDIF  
    141160      IF( ioptio /= 1 )   CALL ctl_stop( 'ice_dyn_rhg_init: choose one and only one ice rheology' ) 
    142161      ! 
    143162      IF( ln_rhg_EVP  )   CALL rhg_evp_rst( 'READ' )  !* read or initialize all required files 
     163      ! no restart for VP as there is no explicit time dependency in the equation 
    144164      ! 
    145165   END SUBROUTINE ice_dyn_rhg_init 
  • NEMO/branches/2020/SI3_vp_rheology/src/ICE/iceistate.F90

    r13472 r13920  
    174174      u_ice (:,:) = 0._wp 
    175175      v_ice (:,:) = 0._wp 
     176 
     177      CALL lbc_lnk_multi( 'ice_istate' , u_ice, 'U', -1., v_ice, 'V', -1. )  ! required for VP rheology 
    176178      ! 
    177179      !------------------------------------------------------------------------ 
Note: See TracChangeset for help on using the changeset viewer.