Version 2 (modified by ctlod, 12 years ago) (diff)


Surface Module integration steps



New structure

Schematic view of calling sequence with the new organisation

step |
        |
        `- CALL sbc | (sbcmod.F90)
                    |- CALL sbc_init 
                    |- CALL sbc_ssm  (sbcssm.F90) 
                    |- CALL sbc_blk_core | (sbcblk_core.F90)
                    |                    |- CALL fld_read     (fldread.F90)
                    |                    `- CALL blk_oce_core (sbcblk_core.F90) >>>> OUT = qsr, qns, emp, emps, utau, vtau
                    | - CALL sbc_ice_lim | (sbcblk_core.F90)
                    |                    |- CALL ice_init
                    |                    |- CALL blk_albedo (albedo.F90)
                    |                    |- CALL blk_ice_core (sbcblk_core.F90)
                    |                    |- CALL lim_rst_opn
                    |                    |- CALL lim_dyn |
                    |                    |               |- CALL lim_dyn_init
                    |                    |               `- CALL lim_rhg
                    |                    |- CALL lim_trp
                    |                    |- CALL lim_dmp
                    |                    |- CALL lim_thd |
                    |                    |               |- CALL lim_thd_init
                    |                    |               |- CALL lim_thd_zdf
                    |                    |               `- CALL lim_thd_lac
                    |                    |- CALL lim_sbc >>>> OUT = qsr, qns, emp, emps, utau, vtau UNDER SEA-ICE
                    |                    |- CALL lim_dia
                    |                    |- CALL lim_wri
                    |                    `- CALL lim_rst_write
                    |- CALL sbc_ssr (sbcssr.F90)
                    |- CALL sbc_rnf (sbcrnf.F90)
                    |- CALL sbc_fwb (sbcfwb.F90)
                    `- CALL sbc_clo (sbcclo.F90)

List of tests to go through

# Gyre configuration
# ORCA2_LIM: perform an internanual run over 2 sucessive year
# ORCA2_LIM: mix time interpolation (climatology & daily)
# ORCA2_LIM:start a run in june for instance

Already done

Timestamp?

- sbcana.F90: missing part related to the salinity surface damping 
- sbcssr.F90 : syntax correction

Fri Nov 9 18:30:30 2007

With this last modification (following one), control prints are similar to those computed with the reference nemo_v2_3 over 3 iterations.
- last test done, use the turb_core subroutine from the reference instead of the one which has been rewritten, 
this allows to get same results (control prints)
- Correct following bug:
            zemp = + emp(ji,jj)     *         frld(ji,jj)      &   !  e-p budget over open ocean fraction 
!!gm              &   - tprecip(ji,jj)                            &   !  liquid precipitation reaches directly the ocean
               &   - tprecip(ji,jj) * ( 1. -  frld(ji,jj) )    &   !  liquid precipitation reaches directly the ocean
               &   + sprecip(ji,jj) * ( 1. - pfrld(ji,jj) )    &   !  taking into account change in ice cover within the time
               &   + rdmsnif(ji,jj) / rdt_ice                      !  freshwaterflux due to snow melting 
               !                                                   !  ice-covered fraction:

- in daymod.F90 ( kt == -1 ) is NOT A BUG !!!!!, add "CALL day( -1 )" into istate.F90 module for the
 calendar initialisation
- transform CALL flx_blk_albedo into blk_albedo in limsbc.F90

Mon Nov 5 16:00:30 2007

- correct the bug on the re-initialisation to zero of mean fields arrays ssX_m() in sbcssm.F90. 
It should be: IF( MOD(kt-2,nn_fsbc) == 0 ) ... instead of IF( MOD(kt,nn_fsbc) == 0 )
         ELSEIF( MOD( kt - 2 , nn_fsbc ) == 0 ) THEN      !   Initialisation: New mean computation   !
            !                                             ! ---------------------------------------- !
            ssu_m(:,:) = 0.e0      ! reset to zero ocean mean sbc fields
            ssv_m(:,:) = 0.e0
            sst_m(:,:) = 0.e0
            sss_m(:,:) = 0.e0
         ENDIF

Wed Oct 31 18:50:05 2007

- bug in iceini.F90, nn_fsbc param. is not known when passing into ice_init() subroutine, this param. is only read
 in sbc_init called when time loop start in step.F90 module.
- move the CALL ice_init line into sbcice_lim.F90 module and remove it from opa.F90 
- remove the "mask multiplication" 1- frld() applied to field tprecip when computing emp(field in lim_sbc() subroutine

Wed Oct 31 14:59:05 2007

- change nn_sst & nn_sss into nn_sstr & nn_sssr into sbcssr.F90 module

Thu Oct 25 09:15:20 2007

- think to update the CORE bulk with the reference one (ln_2m, n_alpha)
- correct bug into daymod.F90 module test "IF (kt == -1 ) into IF (kt == nit000)
- remove the nn_fld parameter from the namsbc_core namelist
- remove the nn_runoff parameter from the namsbc namelist
- add the namsbc_rnf namelist with following parameters:
nn_runoff  = 1       !: runoffs flag
rn_hrnf    = 0.e0    !: runoffs, depth over which enhanced vertical mixing is used
rn_avt_rnf = 0.e0    !: runoffs, value of the additional vertical mixing coef. [m2/s]
cn_dir     = './'    !: Root directory for location of ssr files
sn_rnf               !: informations about the runoff file to be read
sn_cnf               !: informations about the runoff mouth file to be read
- adpat the namsbc namelist in adding ln_dm2dc, nn_ice, nn_fwb, ln_rnf: imply modifications into sbcmod.F90, sbcrnf.F90

Tue Oct 24311:09:08 2007

- cpp key_lim_fdd doesn't exist anymore, only key_ice_lim remains
- qla, qlw & qsb must be commented in diawri.F90 module
- remove the '''nrunoff''' parameter from the namrun ocean namelist
- remove the nfice and nfbulk parameters from the namdom ocean namelist