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 5184 for branches – NEMO

Changeset 5184 for branches


Ignore:
Timestamp:
2015-03-27T15:29:08+01:00 (9 years ago)
Author:
vancop
Message:

TOP ice routines

Location:
branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/CONFIG/SHARED/namelist_pisces_ref

    r5148 r5184  
    371371   pisdiabio(17)  = 'SEDNO3' , 'NO3 remineralization from SED',  'mmole/m3/s' 
    372372/ 
     373!''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' 
     374&nampisice      !  Prescribed sea ice tracers 
     375!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
     376! constant ocean tracer concentrations are defined in trcice_pisces.F90 (Global, Arctic, Antarctic and Baltic) 
     377! trc_ice_ratio     * betw 0 and 1: prescribed ice/ocean tracer concentration ratio 
     378!                   * -1 => the ice-ocean tracer concentration ratio follows the  
     379!                           ice-ocean salinity ratio 
     380!                   * -2 => tracer concentration in sea ice is prescribed and  
     381!                           trc_ice_prescr is used 
     382! trc_ice_prescr    * prescribed tracer concentration used only if  
     383!                     trc_ice_ratio = -2, or -99. if not used 
     384! cn_trc_o          * 'GL' use global ocean values making the Baltic distinction only 
     385!                     'AA' use Arctic/Antarctic contrast besides Baltic distinction 
     386!,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, 
     387!    sn_tri_ ! trc_ice_ratio ! trc_ice_prescr !     cn_trc_o 
     388   sn_tri_dic =           -1.,           -99.,          'AA' 
     389   sn_tri_doc =            0.,           -99.,          'AA' 
     390   sn_tri_tal =           -1.,           -99.,          'AA' 
     391   sn_tri_oxy =           -1.,           -99.,          'GL' 
     392   sn_tri_cal =            0.,           -99.,          'GL' 
     393   sn_tri_po4 =           -1.,           -99.,          'AA' 
     394   sn_tri_poc =            0.,           -99.,          'GL' 
     395   sn_tri_goc =            0.,           -99.,          'GL' 
     396   sn_tri_bfe =            0.,           -99.,          'GL' 
     397   sn_tri_num =            0.,           -99.,          'GL' 
     398   sn_tri_sil =           -1.,           -99.,          'AA' 
     399   sn_tri_dsi =            0.,           -99.,          'GL' 
     400   sn_tri_gsi =            0.,           -99.,          'GL' 
     401   sn_tri_phy =            0.,           -99.,          'GL' 
     402   sn_tri_dia =            0.,           -99.,          'GL' 
     403   sn_tri_zoo =            0.,           -99.,          'GL' 
     404   sn_tri_mes =            0.,           -99.,          'GL' 
     405   sn_tri_fer =           -2.,          15E-9,          'AA' 
     406   sn_tri_sfe =            0.,           -99.,          'GL' 
     407   sn_tri_dfe =            0.,           -99.,          'GL' 
     408   sn_tri_nfe =            0.,           -99.,          'GL' 
     409   sn_tri_nch =            0.,           -99.,          'GL' 
     410   sn_tri_dch =            0.,           -99.,          'GL' 
     411   sn_tri_no3 =           -1.,           -99.,          'AA' 
     412   sn_tri_nh4 =            1.,           -99.,          'AA' 
     413/ 
  • branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/CONFIG/SHARED/namelist_top_ref

    r5102 r5184  
    8080                           !                   =2 no damping in the mixed  layer (rho crieria) 
    8181   cn_resto_tr  = 'resto_tr.nc'    !  create a damping.coeff NetCDF file (=1) or not (=0) 
     82!----------------------------------------------------------------------- 
     83&namtrc_ice       !    Representation of sea ice growth & melt effects 
     84!----------------------------------------------------------------------- 
     85   nn_ice_tr   =  1        !  tracer concentration in sea ice  
     86                           !    =-1 identical cc in ice and ocean (= old code) 
     87                           !    = 0 nil  
     88                           !    = 1 prescribed to a namelist value (implemented in pisces only) 
    8289/ 
    8390!----------------------------------------------------------------------- 
  • branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsed.F90

    r4996 r5184  
    7373      CHARACTER (len=25) :: charout 
    7474      REAL(wp), POINTER, DIMENSION(:,:  ) :: zpdep, zsidep, zwork1, zwork2, zwork3, zwork4 
    75       REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zironice, zbureff 
     75      REAL(wp), POINTER, DIMENSION(:,:  ) :: zdenit2d, zbureff 
    7676      REAL(wp), POINTER, DIMENSION(:,:  ) :: zwsbio3, zwsbio4, zwscal 
    7777      REAL(wp), POINTER, DIMENSION(:,:,:) :: znitrpot, zirondep, zsoufer 
     
    9797      zwork3  (:,:) = 0.e0 
    9898      zwork4  (:,:) = 0.e0 
    99  
    100       ! Iron input/uptake due to sea ice : Crude parameterization based on Lancelot et al. 
    101       ! ---------------------------------------------------- 
    102       IF( ln_ironice ) THEN   
    103          !                                               
    104          CALL wrk_alloc( jpi, jpj, zironice ) 
    105          !                                               
    106          DO jj = 1, jpj 
    107             DO ji = 1, jpi 
    108                zdep    = rfact2 / fse3t(ji,jj,1) 
    109                zwflux  = fmmflx(ji,jj) / 1000._wp 
    110                zfminus = MIN( 0._wp, -zwflux ) * trn(ji,jj,1,jpfer) * zdep 
    111                zfplus  = MAX( 0._wp, -zwflux ) * icefeinput * zdep 
    112                zironice(ji,jj) =  zfplus + zfminus 
    113             END DO 
    114          END DO 
    115          ! 
    116          trn(:,:,1,jpfer) = trn(:,:,1,jpfer) + zironice(:,:)  
    117          !  
    118          IF( lk_iomput .AND. jnt == nrdttrc .AND. iom_use( "Ironice" ) )   & 
    119             &   CALL iom_put( "Ironice", zironice(:,:) * 1.e+3 * rfact2r * fse3t(:,:,1) * tmask(:,:,1) ) ! iron flux from ice 
    120          ! 
    121          CALL wrk_dealloc( jpi, jpj, zironice ) 
    122          !                                               
    123       ENDIF 
    12499 
    125100      ! Add the external input of nutrients from dust deposition 
  • branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/TRP/trcsbc.F90

    r4990 r5184  
    2121   USE trd_oce 
    2222   USE trdtra 
     23   USE sbc_oce 
     24   USE dom_oce 
    2325 
    2426   IMPLICIT NONE 
     
    6062      INTEGER, INTENT( in ) ::   kt          ! ocean time-step index 
    6163      ! 
    62       INTEGER  ::   ji, jj, jn           ! dummy loop indices 
    63       REAL(wp) ::   zsrau, zse3t   ! temporary scalars 
     64      INTEGER  ::   ji, jj, jn                                     ! dummy loop indices 
     65      REAL(wp) ::   zsrau, zse3t                                   ! temporary scalars 
     66      REAL(wp) ::   zswitch, zftra, zcd, zdtra, ztfx, ztra, zeuler ! temporary scalars 
    6467      CHARACTER (len=22) :: charout 
    6568      REAL(wp), POINTER, DIMENSION(:,:  ) :: zsfx 
    6669      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrtrd 
     70 
    6771      !!--------------------------------------------------------------------- 
    6872      ! 
     
    7276                      CALL wrk_alloc( jpi, jpj,      zsfx   ) 
    7377      IF( l_trdtrc )  CALL wrk_alloc( jpi, jpj, jpk, ztrtrd ) 
     78 
     79      SELECT CASE( nn_ice_embd )         ! levitating or embedded sea-ice option 
     80         CASE( 0    )   ;   zswitch = 1  ! (0) standard levitating sea-ice : salt exchange only 
     81         CASE( 1, 2 )   ;   zswitch = 0  ! (1) levitating sea-ice: salt and volume exchange but no pressure effect                                 
     82                                         ! (2) embedded sea-ice : salt and volume fluxes and pressure 
     83      END SELECT 
    7484 
    7585      IF( kt == nittrc000 ) THEN 
     
    91101      ! 0. initialization 
    92102      zsrau = 1. / rau0 
     103 
     104      zeuler = 1.   ;  IF ( neuler .EQ. 0 ) zeuler = 0. 
     105 
    93106      DO jn = 1, jptra 
    94107         ! 
    95108         IF( l_trdtrc ) ztrtrd(:,:,:) = tra(:,:,:,jn)  ! save trends 
    96109         !                                             ! add the trend to the general tracer trend 
    97          DO jj = 2, jpj 
    98             DO ji = fs_2, fs_jpim1   ! vector opt. 
    99                zse3t = 1. / fse3t(ji,jj,1) 
    100                tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) *  zsrau * trn(ji,jj,1,jn) * zse3t 
     110 
     111         IF ( nn_ice_tr == -1 ) THEN  ! identical concentrations in ice and ocean (old code) 
     112 
     113            DO jj = 2, jpj 
     114               DO ji = fs_2, fs_jpim1   ! vector opt. 
     115                  zse3t = 1. / fse3t(ji,jj,1) 
     116                  tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zsfx(ji,jj) *  zsrau * trn(ji,jj,1,jn) * zse3t 
     117               END DO 
    101118            END DO 
    102          END DO 
     119 
     120         ELSE 
     121 
     122            DO jj = 2, jpj 
     123               DO ji = fs_2, fs_jpim1   ! vector opt. 
     124    
     125                  zse3t = 1. / fse3t(ji,jj,1) 
     126                   
     127                  ! tracer flux at the ice/ocean interface (tracer/m2/s) 
     128                  zftra = - trc_i(ji,jj,jn) * fmmflx(ji,jj) ! uptake of tracer in the sea ice 
     129                  zcd   =   trc_o(ji,jj,jn) * fmmflx(ji,jj) ! concentration dilution due to freezing-melting, 
     130                                                               ! only used in the levitating sea ice case 
     131                  ! tracer flux only       : add concentration dilution term in net tracer flux, no F-M in volume flux 
     132                  ! tracer and mass fluxes : no concentration dilution term in net tracer flux, F-M term in volume flux 
     133                  ztfx  = zftra + zswitch * zcd                ! net tracer flux (+C/D if no ice/ocean mass exchange) 
     134    
     135                  ! tracer change (left member: euler; right member:leapfrog) 
     136                  ztra = ( 1. - zeuler ) * trn(ji,jj,1,jn) + zeuler * trb(ji,jj,1,jn) 
     137                   
     138                  ! MAX is there to avoid integral ocean uptake in the case of freezing (for iron) 
     139                  zdtra = MAX ( - ztra / r2dtra(1) , zsrau * ( ztfx + zsfx(ji,jj) * trn(ji,jj,1,jn) ) * zse3t ) ! tracer tendency 
     140                  ! r2dtra is time step 
     141                  tra(ji,jj,1,jn) = tra(ji,jj,1,jn) + zdtra ! new line 
     142    
     143   !              IF ( ztfx .NE. 0.0 ) THEN 
     144   !                  WRITE(numout,*) ji, jj, jn 
     145   !                  WRITE(numout,*) ' trc_o  : ', trc_o(ji,jj,jn) 
     146   !                  WRITE(numout,*) ' trc_i  : ', trc_i(ji,jj,jn) 
     147   !                  WRITE(numout,*) ' fmmflx : ', fmmflx(ji,jj) 
     148   !                  WRITE(numout,*) ' zswitch: ', zswitch 
     149   !                  WRITE(numout,*) ' zcd   : ', zcd 
     150   !                  WRITE(numout,*) ' zftra : ', zftra 
     151   !                  WRITE(numout,*) ' ztfx  : ', ztfx 
     152   !                  WRITE(numout,*) ' zsrau : ', zsrau 
     153   !                  WRITE(numout,*) ' zsfx  : ', zsfx(ji,jj) 
     154   !                  WRITE(numout,*) ' zse3t : ', zse3t 
     155   !                  WRITE(numout,*) ' ztra  : ', ztra 
     156   !                  WRITE(numout,*) ' zdtra : ', zdtra 
     157   !                  WRITE(numout,*) ' Old tendency : ', zsfx(ji,jj) * zsrau * trn(ji,jj,1,jn) * zse3t 
     158   !              ENDIF 
     159    
     160               END DO 
     161            END DO 
     162    
     163         ENDIF 
    103164          
    104165         IF( l_trdtrc ) THEN 
  • branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/trc.F90

    r4990 r5184  
    3434   REAL(wp), PUBLIC                                                ::  areatot        !: total volume  
    3535   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:  )         ::  cvol           !: volume correction -degrad option-  
    36    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:)         ::  trn            !: traceur concentration for now time step 
    37    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:)         ::  tra            !: traceur concentration for next time step 
    38    REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:)         ::  trb            !: traceur concentration for before time step 
     36   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:)         ::  trn            !: tracer concentration for now time step 
     37   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:)         ::  tra            !: tracer concentration for next time step 
     38   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:)         ::  trb            !: tracer concentration for before time step 
     39   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:  )         ::  trc_i          !: prescribed tracer concentration in sea ice for SBC 
     40   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:  )         ::  trc_o          !: prescribed tracer concentration in ocean for SBC 
     41   INTEGER             , PUBLIC                                    ::  nn_ice_tr      !: handling of sea ice tracers 
    3942 
    4043   !! interpolated gradient 
     
    185188      ! 
    186189      ALLOCATE( trn(jpi,jpj,jpk,jptra), trb(jpi,jpj,jpk,jptra), tra(jpi,jpj,jpk,jptra),       &   
     190         &      trc_i(jpi,jpj,jptra)  , trc_o(jpi,jpj,jptra)                          ,       & 
    187191         &      gtru (jpi,jpj,jptra)  , gtrv (jpi,jpj,jptra)                          ,       & 
    188192         &      gtrui(jpi,jpj,jptra)  , gtrvi(jpi,jpj,jptra)                          ,       & 
  • branches/2015/dev_r5171_CNRS_LIM3_seaicebgc/NEMOGCM/NEMO/TOP_SRC/trcini.F90

    r5120 r5184  
    3131   USE lib_mpp         ! distribued memory computing library 
    3232   USE sbc_oce 
     33   USE trcice          ! tracers in sea ice 
    3334  
    3435   IMPLICIT NONE 
     
    100101      IF( lk_c14b    )       CALL trc_ini_c14b         ! C14 bomb  tracer 
    101102      IF( lk_my_trc  )       CALL trc_ini_my_trc       ! MY_TRC  tracers 
     103 
     104      CALL trc_ice_ini                                 ! Tracers in sea ice 
    102105 
    103106      IF( lwp ) THEN 
Note: See TracChangeset for help on using the changeset viewer.