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 14627 – NEMO

Changeset 14627


Ignore:
Timestamp:
2021-03-22T05:00:21+01:00 (3 years ago)
Author:
jonnywilliams
Message:

runs successfully on maui

Location:
branches/UKMO/jonnywilliams-u-br854/NEMOGCM
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/jonnywilliams-u-br854/NEMOGCM/CONFIG/SHARED/namelist_ref

    r8447 r14627  
    405405   rn_antarctica_calving_fraction = 0.5 ! Set fraction of total freshwater flux for iceberg calving - remainder goes to iceshelf melting. 
    406406   rn_iceshelf_fluxes_tolerance = 1e-6  ! Fractional threshold for detecting differences in icesheet masses (must be positive definite). 
     407   rn_antarctica_total_fw_flux_roc  = 1.0 ! Rate of change for freshwater flux from ice sheet->ocean (% of orig flux after 1 yr) (if nn_coupled_iceshelf_fluxes=3). 
     408   rn_greenland_total_fw_flux_roc = 1.0  ! Rate of change for freshwater flux from ice sheet->ocean (% of orig flux after 1 yr) (if nn_coupled_iceshelf_fluxes=3). 
    407409/ 
    408410!----------------------------------------------------------------------- 
  • branches/UKMO/jonnywilliams-u-br854/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_oce.F90

    r8046 r14627  
    153153   ! sbccpl namelist parameters associated with icesheet freshwater input code. Included here rather than in sbccpl.F90 to  
    154154   ! avoid circular dependencies. 
     155   ! SM 24.05.2018 - added defn for rn_antarctica_total_fw_flux_roc, and comment for option for nn_coupled_iceshelf_fluxes to =3 
    155156   INTEGER, PUBLIC     ::   nn_coupled_iceshelf_fluxes     ! =0 : total freshwater input from iceberg calving and ice shelf basal melting  
    156157                                                           ! taken from climatologies used (no action in coupling routines). 
     
    159160                                                           ! =2 :  specify constant freshwater inputs in this namelist to set the combined 
    160161                                                           ! magnitude of iceberg calving and iceshelf melting freshwater fluxes. 
    161    LOGICAL, PUBLIC     ::   ln_iceshelf_init_atmos         ! If true force ocean to initialise iceshelf masses from atmospheric values rather 
    162                                                            ! than values in ocean restart (applicable if nn_coupled_iceshelf_fluxes=1). 
    163    REAL(wp), PUBLIC    ::   rn_greenland_total_fw_flux    ! Constant total rate of freshwater input (kg/s) for Greenland (if nn_coupled_iceshelf_fluxes=2)  
    164    REAL(wp), PUBLIC    ::   rn_greenland_calving_fraction  ! Set fraction of total freshwater flux for iceberg calving - remainder goes to iceshelf melting. 
    165    REAL(wp), PUBLIC    ::   rn_antarctica_total_fw_flux   ! Constant total rate of freshwater input (kg/s) for Antarctica (if nn_coupled_iceshelf_fluxes=2)  
    166    REAL(wp), PUBLIC    ::   rn_antarctica_calving_fraction ! Set fraction of total freshwater flux for iceberg calving - remainder goes to iceshelf melting. 
    167    REAL(wp), PUBLIC    ::   rn_iceshelf_fluxes_tolerance   ! Absolute tolerance for detecting differences in icesheet masses.  
     162                                             ! =3 : as for =2, but with a rate of change also specified in the namelist 
     163   LOGICAL, PUBLIC     ::   ln_iceshelf_init_atmos          ! If true force ocean to initialise iceshelf masses from atmospheric values rather 
     164                                                            ! than values in ocean restart (applicable if nn_coupled_iceshelf_fluxes=1). 
     165   REAL(wp), PUBLIC    ::   rn_greenland_total_fw_flux      ! Constant total rate of freshwater input (kg/s) for Greenland  
     166                                                            ! (if nn_coupled_iceshelf_fluxes=2), or starting rate if nn_coupled_iceshelf_fluxes=3 
     167   REAL(wp), PUBLIC    ::   rn_greenland_calving_fraction   ! Set fraction of total freshwater flux for iceberg calving - remainder goes to iceshelf melting. 
     168   REAL(wp), PUBLIC    ::   rn_greenland_total_fw_flux_roc  ! As rn_antarctica_total_fw_flux_roc but for Greenland Ice Sheet 
     169   REAL(wp), PUBLIC    ::   rn_antarctica_total_fw_flux     ! Constant total rate of freshwater input (kg/s) for Antarctica if  
     170                                                            ! nn_coupled_iceshelf_fluxes=2, or starting rate if nn_coupled_iceshelf_fluxes=3 
     171   REAL(wp), PUBLIC    ::   rn_antarctica_calving_fraction  ! Set fraction of total freshwater flux for iceberg calving - remainder goes to iceshelf melting. 
     172   REAL(wp), PUBLIC    ::   rn_iceshelf_fluxes_tolerance    ! Absolute tolerance for detecting differences in icesheet masses.  
     173   REAL(wp), PUBLIC    ::   rn_antarctica_total_fw_flux_roc ! Rate of change for ice sheet->ocean freshwater flux (% of orig flux after 1 yr,  
     174                                                            ! so 1.1 is 10% inc/yr, 1.0 is no change, -1.1 is a 10% decr/yr) if nn_coupled_iceshelf_fluxes=3  
    168175 
    169176   !! * Substitutions 
  • branches/UKMO/jonnywilliams-u-br854/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90

    r8427 r14627  
    88   !!            3.1  ! 2009_02  (G. Madec, S. Masson, E. Maisonave, A. Caubel) generic coupled interface 
    99   !!            3.4  ! 2011_11  (C. Harris) more flexibility + multi-category fields 
     10   !!            3.5  ! 2019_05 SM - some changes for FW from Ant Ice Sheet to be allowed to vary 
    1011   !!---------------------------------------------------------------------- 
    1112   !!---------------------------------------------------------------------- 
     
    239240      INTEGER ::   inum  
    240241      REAL(wp), POINTER, DIMENSION(:,:) ::   zacs, zaos 
    241       !! 
     242      !! SM 28.5.2018 added rn_antarctica_total_fw_flux_roc and rn_greenland_total_fw_flux_roc tbr from namelist  
    242243      NAMELIST/namsbc_cpl/  sn_snd_temp, sn_snd_alb   , sn_snd_thick , sn_snd_crt   , sn_snd_co2,     & 
    243244         &                  sn_snd_cond, sn_snd_mpnd  , sn_snd_sstfrz, sn_snd_thick1,                 & 
     
    247248         &                  ln_usecplmask, nn_coupled_iceshelf_fluxes, ln_iceshelf_init_atmos,        & 
    248249         &                  rn_greenland_total_fw_flux, rn_greenland_calving_fraction, & 
    249          &                  rn_antarctica_total_fw_flux, rn_antarctica_calving_fraction, rn_iceshelf_fluxes_tolerance 
     250         &                  rn_antarctica_total_fw_flux, rn_antarctica_calving_fraction, rn_iceshelf_fluxes_tolerance, & 
     251         &                  rn_antarctica_total_fw_flux_roc, rn_greenland_total_fw_flux_roc 
    250252      !!--------------------------------------------------------------------- 
    251253 
     
    322324         WRITE(numout,*)'  rn_antarctica_total_fw_flux        = ', rn_antarctica_total_fw_flux 
    323325         WRITE(numout,*)'  rn_greenland_calving_fraction       = ', rn_greenland_calving_fraction 
     326       WRITE(numout,*)'  rn_greenland_total_fw_flux_roc     = ', rn_greenland_total_fw_flux_roc ! SM added 28.05.2018 
    324327         WRITE(numout,*)'  rn_antarctica_calving_fraction      = ', rn_antarctica_calving_fraction 
    325328         WRITE(numout,*)'  rn_iceshelf_fluxes_tolerance        = ', rn_iceshelf_fluxes_tolerance 
     329       WRITE(numout,*)'  rn_antarctica_total_fw_flux_roc     = ', rn_antarctica_total_fw_flux_roc ! SM added 28.05.2018 
    326330      ENDIF 
    327331 
     
    9961000 
    9971001 
    998    SUBROUTINE sbc_cpl_rcv( kt, k_fsbc, k_ice )      
     1002   SUBROUTINE sbc_cpl_rcv( kt, k_fsbc, k_ice ) 
    9991003      !!---------------------------------------------------------------------- 
    10001004      !!             ***  ROUTINE sbc_cpl_rcv  *** 
     
    14031407            IF( zgreenland_icesheet_mass_b /= 0.0 ) & 
    14041408           &     greenland_icesheet_mass_rate_of_change = ( greenland_icesheet_mass - zgreenland_icesheet_mass_b ) / greenland_icesheet_timelapsed  
    1405             greenland_icesheet_timelapsed = 0.0_wp        
    1406          ENDIF 
     1409               greenland_icesheet_timelapsed = 0.0_wp        
     1410            ENDIF 
    14071411         IF(lwp) WRITE(numout,*) 'Greenland icesheet mass (kg) read in is ', zgreenland_icesheet_mass_in 
    14081412         IF(lwp) WRITE(numout,*) 'Greenland icesheet mass (kg) used is    ', greenland_icesheet_mass 
     
    14111415      ELSE IF ( nn_coupled_iceshelf_fluxes == 2 ) THEN 
    14121416         greenland_icesheet_mass_rate_of_change = rn_greenland_total_fw_flux 
     1417     ! SM - added 24.05.2018 
     1418     ! 3rd option to allow for a variable rate of fw flux from antarctic ice sheet to ocean 
     1419     ! A 10% increase per year is equivalent to an increase 
     1420           ! after n sec by a factor of 1.1**(n/31104000) where there are 31104000 secs in 1 model yr 
     1421           ! namelist value for rn_greenland_total_fw_flux_roc is 1.1 for 10% inc/yr, 1.0 for no inc, -1.1 for 10% decr/yr 
     1422      ELSE IF ( nn_coupled_iceshelf_fluxes ==3 ) THEN 
     1423         IF( ln_iceshelf_init_atmos .AND. kt == 1 ) THEN 
     1424            ! On the first timestep (of an NRUN) force the ocean to ignore the icesheet masses in the ocean restart 
     1425            ! and take them from the atmosphere to avoid problems with using inconsistent ocean and atmosphere restarts. 
     1426            zgreenland_icesheet_mass_b = zgreenland_icesheet_mass_in 
     1427            greenland_icesheet_mass = zgreenland_icesheet_mass_in 
     1428         ENDIF 
     1429 
     1430         greenland_icesheet_mass_rate_of_change = rn_greenland_total_fw_flux*(rn_greenland_total_fw_flux_roc**(kt*rdt/31104000.0)) 
    14131431      ENDIF 
    14141432 
     
    14481466      ELSE IF ( nn_coupled_iceshelf_fluxes == 2 ) THEN 
    14491467         antarctica_icesheet_mass_rate_of_change = rn_antarctica_total_fw_flux 
     1468     ! SM - added 24.05.2018 
     1469     ! 3rd option to allow for a variable rate of fw flux from antarctic ice sheet to ocean 
     1470     ! A 10% increase per year is equivalent to an increase 
     1471           ! after n sec by a factor of 1.1**(n/31104000) where there are 31104000 secs in 1 model yr 
     1472           ! namelist value forrn_antarctica_total_fw_flux_roc is 1.1 for 10% inc/yr, 1.0 for no inc, -1.1 for 10% decr/yr 
     1473     ELSE IF ( nn_coupled_iceshelf_fluxes ==3 ) THEN 
     1474         IF( ln_iceshelf_init_atmos .AND. kt == 1 ) THEN 
     1475            ! On the first timestep (of an NRUN) force the ocean to ignore the icesheet masses in the ocean restart 
     1476            ! and take them from the atmosphere to avoid problems with using inconsistent ocean and atmosphere restarts. 
     1477            zantarctica_icesheet_mass_b = zantarctica_icesheet_mass_in 
     1478            antarctica_icesheet_mass = zantarctica_icesheet_mass_in 
     1479         ENDIF 
     1480 
     1481         antarctica_icesheet_mass_rate_of_change = rn_antarctica_total_fw_flux*(rn_antarctica_total_fw_flux_roc**(kt*rdt/31104000.0)) 
    14501482      ENDIF 
    14511483 
     
    19872019 
    19882020#else 
     2021 
    19892022      ! clem: this formulation is certainly wrong... but better than it was... 
    19902023       
  • branches/UKMO/jonnywilliams-u-br854/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90

    r8400 r14627  
    3838   USE ice_gather_scatter 
    3939   USE ice_calendar, only: dt 
    40 # if defined key_cice4 
     40#if defined key_cice4 
    4141   USE ice_state, only: aice,aicen,uvel,vvel,vsno,vsnon,vice,vicen 
    4242   USE ice_flux, only: strax,stray,strocnx,strocny,frain,fsnow,  & 
     
    5757                flatn_f,fsurfn_f,fcondtopn_f,                    & 
    5858#ifdef key_asminc 
    59                 daice_da,fresh_da,fsalt_da,                    & 
     59                daice_da,fresh_da,fsalt_da,                      & 
    6060#endif 
    6161                uatm,vatm,wind,fsw,flw,Tair,potT,Qa,rhoa,zlvl,   & 
     
    6565      !! - at CICE5.0,   hadax/r1015_GSI8_with_GSI7 
    6666      !! - at CICE5.1.2, hadax/vn5.1.2_GSI8 
    67                 keffn_top,Tn_top 
     67                keffn_top,Tn_top,a_to_ocn_htflux,tgrid_stressmag 
    6868 
    6969   USE ice_therm_shared, only: calc_Tsfc, heat_capacity 
     
    236236         ENDDO 
    237237      ENDIF 
     238 
    238239 
    239240! T point to U point 
     
    302303         ENDIF 
    303304      ENDIF 
    304   
     305 
     306 
    305307      CALL wrk_dealloc( jpi,jpj, ztmp1, ztmp2 ) 
    306308 
     
    375377         ENDDO 
    376378         CALL nemo2cice(ztmp,stray,'F', -1. ) 
     379 
     380! share taum with CICE to use as surface stress for ice-free cells  
     381! (to determine whether new ice should form as grease or nilas) 
     382         CALL nemo2cice(taum,tgrid_stressmag,'T', 1. ) 
     383 
    377384 
    378385 
     
    397404               ztmpn(:,:,jl)=qla_ice(:,:,jl)*a_i(:,:,jl) 
    398405            ENDDO 
    399     ELSE 
     406        ELSE 
    400407           !In coupled mode - qla_ice calculated in sbc_cpl for each category 
    401408           ztmpn(:,:,1:ncat)=qla_ice(:,:,1:ncat) 
     
    422429            ENDIF 
    423430            CALL nemo2cice(ztmp,fsurfn_f(:,:,jl,:),'T', 1. ) 
    424          ENDDO 
     431 
     432         ENDDO 
     433 
     434!  atmos->ocn heat flux needed by CICE for freeze/melt of grease 
     435! qns the sum of sensible, latent and long wave heat fluxes plus the heat content 
     436! of the mass exchange with the atmosphere and sea-ice (trend calc'd in trasbc.F90?) 
     437! qsr is the penetrative part of the heat flux (trend calc'd in traqsr.F90?) 
     438         ztmp(:,:) = qns_tot(:,:) + qsr_tot(:,:) 
     439         CALL nemo2cice(ztmp,a_to_ocn_htflux,'T',1.) 
     440 
    425441 
    426442      ELSE IF (ksbc == jp_core) THEN 
     
    626642taum(:,:)=(1.0-fr_i(:,:))*taum(:,:)+fr_i(:,:)*SQRT(ztmp1**2. + ztmp2**2.)  
    627643 
     644 
     645 
    628646! Freshwater fluxes  
    629647 
  • branches/UKMO/jonnywilliams-u-br854/NEMOGCM/TOOLS/COMPILE/tools.txt

    r6487 r14627  
    1 SIREN  
     1REBUILD_NEMO  
Note: See TracChangeset for help on using the changeset viewer.