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.
Milestones/New_Surface_Module (diff) – NEMO

Changes between Initial Version and Version 1 of Milestones/New_Surface_Module


Ignore:
Timestamp:
2016-07-06T12:17:12+02:00 (8 years ago)
Author:
nicolasmartin
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Milestones/New_Surface_Module

    v1 v1  
     1= Milestone New Surface Module = 
     2---- 
     3== Information about new surface module == 
     4[[Timestamp]] 
     5 
     6[[Color(white,red, STILL TO DO)]] 
     7 
     8{{{ 
     9- For freeze(:,:) array: change this name into fr_ice_cover(:,:) and make its declaration into sbc_oce.F90 [[BR]] 
     10- in sbcice_if:F90: fr_ice_cover(:,:) = zicover 
     11- in sbcice_lim_2.F90: fr_ice_cover(:,:) = 1. - frld(:,:) 
     12- in sbcice_lim_3.F90: fr_ice_cover(:,:) = at_i(:,:) (A CHECKER) 
     13- in other case set it to zero into sbcmod.F90 (nn_ice parameter) ++ add comments about this field in output. 
     14- move the print control from limdyn.F90 into limrhg.F90 
     15- add the 2m option for Bulk CORE 
     16- move the CALL sbc_mod from step.F90 to opa.F90 to make easier the coupling with any other sea-ice model. 
     17- add the management of fields for interannual runs 
     18DONE: - Ajouter le seuillage sur le calcul du  flux de chaleur latente dans CORE comme c'est fait dans CLIO. 
     19DONE: - Use the tmask(:,:) in the computatin of wind speed zwind_speed_t in sbcblk_core.F90 but replace (2. - tmask(:,:)) 
     20in the computation of wind stress utau & vtau by (2. - MIN(tmask(i,j),tmask(i+1,j) ) ) (for utau in tis case) 
     21DONE: - add the computation of Sea-ice cover (freeze(:,:) array) = (1. -frld(:,:)) somewhere maybe into limsbc.F90 module since it is saved in diawri.F90 
     22DONE: - check freshwater budget 
     23}}} 
     24For the climatological run:[[BR]] 
     25 
     26{{{ 
     27- Add New TKE (the wind speed must be saved in sbcblk_core.F90 and a even when no bulk are used),  
     28check also the latitude dependence of the Kz background coefficient. 
     29- aadd the Kz tides (2 algo.) 
     30- add three lenght waves (RGB) and ocean color data 
     31- modifications related to the cross-land advection over straits. 
     32- advective BBL ? 
     33- in daymod.F90, add a case to switch either to 365 or 366 days. 
     34- Add an other case in sbcfwb in which we just adjust the precip to close the freswater budget. (RISKY) 
     35}}} 
     36Thur Feb 14 16:31:59 2008[[BR]] 
     37 
     38 * Other bug in limdyn.F90 from the REF_CORE code; there is a wrong  indices shift in the computation 
     39 
     40of the wind module ust2s() on T-points using ui_ice()-ui_oce() at I-points. It should be as below:[[BR]] 
     41 
     42{{{ 
     43        ! computation of friction velocity 
     44         DO jj = 2, jpjm1 
     45            DO ji = 2, jpim1 
     46 
     47!CT start SDP6 
     48               zu_ice   = u_ice(ji+1,jj+1) - u_oce(ji+1,jj+1) 
     49               zv_ice   = v_ice(ji+1,jj+1) - v_oce(ji+1,jj+1) 
     50!CT SDP6              zu_ice   = u_ice(ji-1,jj-1) - u_oce(ji-1,jj-1) 
     51!CT SDP6              zv_ice   = v_ice(ji-1,jj-1) - v_oce(ji-1,jj-1) 
     52               zt11  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) 
     53 
     54               zu_ice   = u_ice(ji,jj+1) - u_oce(ji,jj+1) 
     55               zv_ice   = v_ice(ji,jj+1) - v_oce(ji,jj+1) 
     56!CT SDP6              zu_ice   = u_ice(ji-1,jj) - u_oce(ji-1,jj) 
     57!CT SDP6              zv_ice   = v_ice(ji-1,jj) - v_oce(ji-1,jj) 
     58               zt12  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) 
     59 
     60               zu_ice   = u_ice(ji+1,jj) - u_oce(ji+1,jj) 
     61               zv_ice   = v_ice(ji+1,jj) - v_oce(ji+1,jj) 
     62!CT SDP6              zu_ice   = u_ice(ji,jj-1) - u_oce(ji,jj-1) 
     63!CT SDP6              zv_ice   = v_ice(ji,jj-1) - v_oce(ji,jj-1) 
     64               zt21  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) 
     65 
     66               zu_ice   = u_ice(ji,jj) - u_oce(ji,jj) 
     67               zv_ice   = v_ice(ji,jj) - v_oce(ji,jj) 
     68               zt22  = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) 
     69!CT end SDP6 
     70 
     71               ztair2 = gtaux(ji,jj) * gtaux(ji,jj) + gtauy(ji,jj) * gtauy(ji,jj) 
     72 
     73!CT start SDP5 
     74               zustm =  0.25 * ( zt11 + zt12 + zt21 + zt22 ) 
     75!CT start               zustm =  ( 1 - frld(ji,jj) ) * 0.25 * ( zt11 + zt12 + zt21 + zt22 )        & 
     76!CT start                  &  +        frld(ji,jj)   * SQRT( ztair2 ) 
     77!CT start SDP5 
     78 
     79               ust2s(ji,jj) = ( zustm / rau0 ) * ( rone + sdvt(ji,jj) ) * tms(ji,jj) 
     80            END DO 
     81         END DO 
     82}}} 
     83Wed Feb 13 18:45:01 2008[[BR]] 
     84 
     85 * Bug correction in ocesbc.F90 module in the computation of the wind-stress between sea-ice and ocean[[BR]] 
     86{{{ 
     87         ! update the stress below sea-ice area 
     88         DO jj = 1, jpjm1 
     89            DO ji = 1, fs_jpim1   ! vertor opt. 
     90!CT start SDP4 
     91               ztx         = MAX( freezn(ji,jj), freezn(ji+1,jj) ) 
     92               zty         = MAX( freezn(ji,jj), freezn(ji,jj+1) ) 
     93!CT            ztx         = MAX( freezn(ji,jj), freezn(ji,jj+1) )   ! ice/ocean indicator at U- and V-points 
     94!CT            zty         = MAX( freezn(ji,jj), freezn(ji+1,jj) ) 
     95!CT end SDP4 
     96               ztaux       = 0.5 *( ftaux(ji+1,jj) + ftaux(ji+1,jj+1) ) ! ice-ocean stress at U- and V-points 
     97               ztauy       = 0.5 *( ftauy(ji,jj+1) + ftauy(ji+1,jj+1) ) 
     98               taux(ji,jj) = (1.-ztx) * taux(ji,jj) + ztx * ztaux    ! stress at the ocean surface 
     99               tauy(ji,jj) = (1.-zty) * tauy(ji,jj) + zty * ztauy 
     100            END DO 
     101         END DO 
     102}}} 
     103 
     104Tue Jan 14 10:15:46 2008 
     105 
     106Name of variables outputs by the sea-ice model. 
     107 
     108{{{ 
     109lim_wri_init : Ice parameters for outputs 
     110 ~~~~~~~~~~~~ 
     111     number of fields to be stored         noumef =   19 
     112            title                            name     unit      Saving (1/0)     multiplicative constant       additive constant 
     113 1  Snow thickness                        isnowthi      m           1            1.000000000000000            0.000000000000000D+00 
     114 2  Ice thickness                         iicethic      m           1            1.000000000000000            0.000000000000000D+00 
     115 3  Ice produced                          iiceprod      m/kt        1            1.000000000000000            0.000000000000000D+00 
     116 4  Ice concentration                     ileadfra      %           1            -1.000000000000000            1.000000000000000 
     117 5  Ice temperature                       iicetemp      C           1            1.000000000000000            -273.1500000000000 
     118 6  Oceanic flux at the ice base          ioceflxb      w/m2        1            1.000000000000000            0.000000000000000D+00 
     119 7  Ice velocity u                        iicevelu      m/s         1            1.000000000000000            0.000000000000000D+00 
     120 8  Ice velocity v                        iicevelv      m/s         1            1.000000000000000            0.000000000000000D+00 
     121 9  Sea surface temperature               isstempe      C           1            1.000000000000000            -273.1500000000000 
     12210  Sea surface salinity                  isssalin      PSU         1            1.000000000000000            0.000000000000000D+00 
     12311  Total flux at ocean surface           iocetflx      w/m2        1            1.000000000000000            0.000000000000000D+00 
     12412  Solar flux at ocean surface           iocesflx      w/m2        1            1.000000000000000            0.000000000000000D+00 
     12513  Non-solar flux at ocean surface       iocwnsfl      w/m2        1            1.000000000000000            0.000000000000000D+00 
     12614  Salt flux at ocean surface            iocesafl      kg/m2/kt    1            1.000000000000000            0.000000000000000D+00 
     12715  Wind stress u                         iocestru      Pa          1            1.000000000000000            0.000000000000000D+00 
     12816  Wind stress v                         iocestrv      Pa          1            1.000000000000000            0.000000000000000D+00 
     12917  Solar flux at ice/ocean surface       iicesflx      w/m2        1            1.000000000000000            0.000000000000000D+00 
     13018  Non-solar flux at ice/ocean surface   iicenflx      w/m2        1            1.000000000000000            0.000000000000000D+00 
     13119  Snow precipitation                    isnowpre      kg/day      1            1.000000000000000            0.000000000000000D+00 
     132}}} 
     133Tue Jan 7 15:43:32 2008 
     134 
     135{{{ 
     136- For the 10 years run, use monthly values for precip and snow without time interpolation between  
     137months because it is not well done in flx_core.h90 for leapyear 
     138}}} 
     139Mon Jan 7 11:30:30 2008 
     140 
     141{{{ 
     142- when switching to nbit_cmp=0 one must force the field erp(:,:) to zero in the reference code 
     143oce_sbc_dmp() subroutine to avoid SSS restoring when key_dtasal is active since it doesn't occur  
     144in the New SBC module. 
     145- the switch of ln_limdyn=.true. seems also good. 
     146}}} 
     147Have a look here to see some difference plots: [wiki:private/NewSurfaceModule] 
     148 
     149Thu Jan 3 17:24:23 2008 
     150 
     151{{{ 
     152- The bug below is replaced by the following lines into sbcblk_core.F90 
     153         emp (:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) 
     154         emps(:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) 
     155as before and into limsbc.F90 
     156            zemp = + emp(ji,jj)     *         frld(ji,jj)     &   !  e-p budget over open ocean fraction  
     157               &   - tprecip(ji,jj)  * ( 1. - frld(ji,jj) )      &   !  liquid precipitation reaches directly the ocean 
     158               &   + sprecip(ji,jj) * ( 1. - pfrld(ji,jj) )    &   !  taking into account change in ice cover within the time step 
     159               &   + rdmsnif(ji,jj) / rdt_ice                      !  freshwaterflux due to snow melting 
     160 
     161 
     162- Potential BUG in sbcblk_core.F90, add the following lines concerning the emp() & emps() computation  
     163!CT start 
     164      IF( lk_ice_lim )   THEN 
     165!CDIR COLLAPSE 
     166         emp (:,:) = zevap(:,:)  
     167         emps(:,:) = zevap(:,:) 
     168      ELSE 
     169!CDIR COLLAPSE 
     170         emp (:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) 
     171         emps(:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) 
     172      ENDIF 
     173!CT end 
     174because in limsbc.F90 we do:  
     175            zemp = + emp(ji,jj)     *         frld(ji,jj)      &   !  e-p budget over open ocean fraction  
     176               &   - tprecip(ji,jj)                            &   !  liquid precipitation reaches directly the ocean 
     177               &   + sprecip(ji,jj) * ( 1. - pfrld(ji,jj) )    &   !  taking into account change in ice cover within the time step 
     178               &   + rdmsnif(ji,jj) / rdt_ice                      !  freshwaterflux due to snow melting 
     179 
     180- in step.F90, line "adatrj = adatrj + rdt/86400._wp" seems to be useless, to remove ??? 
     181- modification in daymod.F90 to ensure restartability. test aver 14 days with ORCA2_LIM: check OK 
     182- check that data read when begening a run the 8th day are strictly the same than those read when restarting the 8th day: check OK 
     183- Remove useless CALL to day(nit000) into opa.F90 module since it is done in istate_init CALL day(-1)  
     184}}} 
     185Tue Nov 6 16:00:30 2007 
     186 
     187{{{ 
     188- modifcations to perfom into the sbcana.F90 module for the GYRE configuration: 
     189}}} 
     190Mon Nov 5 16:00:30 2007 
     191 
     192{{{ 
     193- Correct following bug: 
     194            zemp = + emp(ji,jj)     *         frld(ji,jj)      &   !  e-p budget over open ocean fraction  
     195!!gm              &   - tprecip(ji,jj)                            &   !  liquid precipitation reaches directly the ocean 
     196               &   - tprecip(ji,jj) * ( 1. -  frld(ji,jj) )    &   !  liquid precipitation reaches directly the ocean 
     197               &   + sprecip(ji,jj) * ( 1. - pfrld(ji,jj) )    &   !  taking into account change in ice cover within the time step 
     198               &   + rdmsnif(ji,jj) / rdt_ice                      !  freshwaterflux due to snow melting  
     199               !                                                   !  ice-covered fraction: 
     200 
     201- in daymod.F90 ( kt == -1 ) is NOT A BUG !!!!!, add "CALL day( -1 )" into istate.F90 module for the calendar initialisation 
     202Schematic view of calling sequence with the new organisation    
     203step | 
     204        | 
     205        `- CALL sbc | (sbcmod.F90) 
     206                    |- CALL sbc_init  
     207                    |- CALL sbc_ssm  (sbcssm.F90)  
     208                    |- CALL sbc_blk_core | (sbcblk_core.F90) 
     209                    |                    |- CALL fld_read     (fldread.F90) 
     210                    |                    `- CALL blk_oce_core (sbcblk_core.F90) >>>> OUT = qsr, qns, emp, emps, utau, vtau OVER OCEAN 
     211                    | - CALL sbc_ice_lim | (sbcblk_core.F90) 
     212                    |                    |- CALL ice_init 
     213                    |                    |- CALL blk_albedo (albedo.F90) 
     214                    |                    |- CALL blk_ice_core (sbcblk_core.F90) 
     215                    |                    |- CALL lim_rst_opn 
     216                    |                    |- CALL lim_dyn | 
     217                    |                    |               |- CALL lim_dyn_init 
     218                    |                    |               `- CALL lim_rhg 
     219                    |                    |- CALL lim_trp 
     220                    |                    |- CALL lim_dmp 
     221                    |                    |- CALL lim_thd | 
     222                    |                    |               |- CALL lim_thd_init 
     223                    |                    |               |- CALL lim_thd_zdf 
     224                    |                    |               `- CALL lim_thd_lac 
     225                    |                    |- CALL lim_sbc >>>> OUT = qsr, qns, emp, emps, utau, vtau UNDER SEA-ICE 
     226                    |                    |- CALL lim_dia 
     227                    |                    |- CALL lim_wri 
     228                    |                    `- CALL lim_rst_write 
     229                    |- CALL sbc_ssr (sbcssr.F90) 
     230                    |- CALL sbc_rnf (sbcrnf.F90) 
     231                    |- CALL sbc_fwb (sbcfwb.F90) 
     232                    `- CALL sbc_clo (sbcclo.F90) 
     233}}} 
     234{{{ 
     235- transform CALL flx_blk_albedo into blk_albedo in limsbc.F90 
     236}}} 
     237Mon Nov 5 16:00:30 2007 
     238 
     239{{{ 
     240- correct the bug on the re-initialisation to zero of mean fields arrays ssX_m() in sbcssm.F90.  
     241It should be: IF( MOD(kt-2,nn_fsbc) == 0 ) ... instead of IF( MOD(kt,nn_fsbc) == 0 ) 
     242         ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN      !   Initialisation: New mean computation   ! 
     243            !                                             ! ---------------------------------------- ! 
     244            ssu_m(:,:) = 0.e0      ! reset to zero ocean mean sbc fields 
     245            ssv_m(:,:) = 0.e0 
     246            sst_m(:,:) = 0.e0 
     247            sss_m(:,:) = 0.e0 
     248         ENDIF 
     249}}} 
     250Wed Oct 31 18:50:05 2007 
     251 
     252{{{ 
     253- bug in iceini.F90, nn_fsbc param. is not known when passing into ice_init() subroutine, this param. is only read 
     254 in sbc_init called when time loop start in step.F90 module. 
     255- move the CALL ice_init line into sbcice_lim.F90 module and remove it from opa.F90  
     256- remove the "mask multiplication" 1- frld() applied to field tprecip when computing emp(field in lim_sbc() subroutine 
     257}}} 
     258Wed Oct 31 14:59:05 2007 
     259 
     260{{{ 
     261- change nn_sst & nn_sss into nn_sstr & nn_sssr into sbcssr.F90 module 
     262}}} 
     263Thu Oct 25 09:15:20 2007 
     264 
     265{{{ 
     266- think to update the CORE bulk with the reference one (ln_2m, n_alpha) 
     267- correct bug into daymod.F90 module test "IF (kt == -1 ) into IF (kt == nit000) 
     268- remove the nn_fld parameter from the namsbc_core namelist 
     269- remove the nn_runoff parameter from the namsbc namelist 
     270- add the namsbc_rnf namelist with following parameters: 
     271nn_runoff  = 1       !: runoffs flag 
     272rn_hrnf    = 0.e0    !: runoffs, depth over which enhanced vertical mixing is used 
     273rn_avt_rnf = 0.e0    !: runoffs, value of the additional vertical mixing coef. [m2/s] 
     274cn_dir     = './'    !: Root directory for location of ssr files 
     275sn_rnf               !: informations about the runoff file to be read 
     276sn_cnf               !: informations about the runoff mouth file to be read 
     277- adpat the namsbc namelist in adding ln_dm2dc, nn_ice, nn_fwb, ln_rnf: imply modifications into sbcmod.F90, sbcrnf.F90 
     278}}} 
     279Tue Oct 24311:09:08 2007 
     280 
     281{{{ 
     282- which value of roatation angle angv should be applied to the wind stress & to the sea-ice velocity ? 
     283- cpp key_lim_fdd doesn't exist anymore, only key_ice_lim remains 
     284- qla, qlw & qsb must be commented in diawri.F90 module 
     285- remove the '''nrunoff''' parameter from the namrun ocean namelist 
     286- remove the nfice and nfbulk parameters from the namdom ocean namelist 
     287}}} 
     288----