= Milestone New Surface Module = ---- == Information about new surface module == [[Timestamp]] [[Color(white,red, STILL TO DO)]] {{{ - For freeze(:,:) array: change this name into fr_ice_cover(:,:) and make its declaration into sbc_oce.F90 [[BR]] - in sbcice_if:F90: fr_ice_cover(:,:) = zicover - in sbcice_lim_2.F90: fr_ice_cover(:,:) = 1. - frld(:,:) - in sbcice_lim_3.F90: fr_ice_cover(:,:) = at_i(:,:) (A CHECKER) - in other case set it to zero into sbcmod.F90 (nn_ice parameter) ++ add comments about this field in output. - move the print control from limdyn.F90 into limrhg.F90 - add the 2m option for Bulk CORE - move the CALL sbc_mod from step.F90 to opa.F90 to make easier the coupling with any other sea-ice model. - add the management of fields for interannual runs DONE: - Ajouter le seuillage sur le calcul du flux de chaleur latente dans CORE comme c'est fait dans CLIO. DONE: - Use the tmask(:,:) in the computatin of wind speed zwind_speed_t in sbcblk_core.F90 but replace (2. - tmask(:,:)) in the computation of wind stress utau & vtau by (2. - MIN(tmask(i,j),tmask(i+1,j) ) ) (for utau in tis case) DONE: - add the computation of Sea-ice cover (freeze(:,:) array) = (1. -frld(:,:)) somewhere maybe into limsbc.F90 module since it is saved in diawri.F90 DONE: - check freshwater budget }}} For the climatological run:[[BR]] {{{ - Add New TKE (the wind speed must be saved in sbcblk_core.F90 and a even when no bulk are used), check also the latitude dependence of the Kz background coefficient. - aadd the Kz tides (2 algo.) - add three lenght waves (RGB) and ocean color data - modifications related to the cross-land advection over straits. - advective BBL ? - in daymod.F90, add a case to switch either to 365 or 366 days. - Add an other case in sbcfwb in which we just adjust the precip to close the freswater budget. (RISKY) }}} Thur Feb 14 16:31:59 2008[[BR]] * Other bug in limdyn.F90 from the REF_CORE code; there is a wrong indices shift in the computation of the wind module ust2s() on T-points using ui_ice()-ui_oce() at I-points. It should be as below:[[BR]] {{{ ! computation of friction velocity DO jj = 2, jpjm1 DO ji = 2, jpim1 !CT start SDP6 zu_ice = u_ice(ji+1,jj+1) - u_oce(ji+1,jj+1) zv_ice = v_ice(ji+1,jj+1) - v_oce(ji+1,jj+1) !CT SDP6 zu_ice = u_ice(ji-1,jj-1) - u_oce(ji-1,jj-1) !CT SDP6 zv_ice = v_ice(ji-1,jj-1) - v_oce(ji-1,jj-1) zt11 = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) zu_ice = u_ice(ji,jj+1) - u_oce(ji,jj+1) zv_ice = v_ice(ji,jj+1) - v_oce(ji,jj+1) !CT SDP6 zu_ice = u_ice(ji-1,jj) - u_oce(ji-1,jj) !CT SDP6 zv_ice = v_ice(ji-1,jj) - v_oce(ji-1,jj) zt12 = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) zu_ice = u_ice(ji+1,jj) - u_oce(ji+1,jj) zv_ice = v_ice(ji+1,jj) - v_oce(ji+1,jj) !CT SDP6 zu_ice = u_ice(ji,jj-1) - u_oce(ji,jj-1) !CT SDP6 zv_ice = v_ice(ji,jj-1) - v_oce(ji,jj-1) zt21 = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) zu_ice = u_ice(ji,jj) - u_oce(ji,jj) zv_ice = v_ice(ji,jj) - v_oce(ji,jj) zt22 = rhoco * ( zu_ice * zu_ice + zv_ice * zv_ice ) !CT end SDP6 ztair2 = gtaux(ji,jj) * gtaux(ji,jj) + gtauy(ji,jj) * gtauy(ji,jj) !CT start SDP5 zustm = 0.25 * ( zt11 + zt12 + zt21 + zt22 ) !CT start zustm = ( 1 - frld(ji,jj) ) * 0.25 * ( zt11 + zt12 + zt21 + zt22 ) & !CT start & + frld(ji,jj) * SQRT( ztair2 ) !CT start SDP5 ust2s(ji,jj) = ( zustm / rau0 ) * ( rone + sdvt(ji,jj) ) * tms(ji,jj) END DO END DO }}} Wed Feb 13 18:45:01 2008[[BR]] * Bug correction in ocesbc.F90 module in the computation of the wind-stress between sea-ice and ocean[[BR]] {{{ ! update the stress below sea-ice area DO jj = 1, jpjm1 DO ji = 1, fs_jpim1 ! vertor opt. !CT start SDP4 ztx = MAX( freezn(ji,jj), freezn(ji+1,jj) ) zty = MAX( freezn(ji,jj), freezn(ji,jj+1) ) !CT ztx = MAX( freezn(ji,jj), freezn(ji,jj+1) ) ! ice/ocean indicator at U- and V-points !CT zty = MAX( freezn(ji,jj), freezn(ji+1,jj) ) !CT end SDP4 ztaux = 0.5 *( ftaux(ji+1,jj) + ftaux(ji+1,jj+1) ) ! ice-ocean stress at U- and V-points ztauy = 0.5 *( ftauy(ji,jj+1) + ftauy(ji+1,jj+1) ) taux(ji,jj) = (1.-ztx) * taux(ji,jj) + ztx * ztaux ! stress at the ocean surface tauy(ji,jj) = (1.-zty) * tauy(ji,jj) + zty * ztauy END DO END DO }}} Tue Jan 14 10:15:46 2008 Name of variables outputs by the sea-ice model. {{{ lim_wri_init : Ice parameters for outputs ~~~~~~~~~~~~ number of fields to be stored noumef = 19 title name unit Saving (1/0) multiplicative constant additive constant 1 Snow thickness isnowthi m 1 1.000000000000000 0.000000000000000D+00 2 Ice thickness iicethic m 1 1.000000000000000 0.000000000000000D+00 3 Ice produced iiceprod m/kt 1 1.000000000000000 0.000000000000000D+00 4 Ice concentration ileadfra % 1 -1.000000000000000 1.000000000000000 5 Ice temperature iicetemp C 1 1.000000000000000 -273.1500000000000 6 Oceanic flux at the ice base ioceflxb w/m2 1 1.000000000000000 0.000000000000000D+00 7 Ice velocity u iicevelu m/s 1 1.000000000000000 0.000000000000000D+00 8 Ice velocity v iicevelv m/s 1 1.000000000000000 0.000000000000000D+00 9 Sea surface temperature isstempe C 1 1.000000000000000 -273.1500000000000 10 Sea surface salinity isssalin PSU 1 1.000000000000000 0.000000000000000D+00 11 Total flux at ocean surface iocetflx w/m2 1 1.000000000000000 0.000000000000000D+00 12 Solar flux at ocean surface iocesflx w/m2 1 1.000000000000000 0.000000000000000D+00 13 Non-solar flux at ocean surface iocwnsfl w/m2 1 1.000000000000000 0.000000000000000D+00 14 Salt flux at ocean surface iocesafl kg/m2/kt 1 1.000000000000000 0.000000000000000D+00 15 Wind stress u iocestru Pa 1 1.000000000000000 0.000000000000000D+00 16 Wind stress v iocestrv Pa 1 1.000000000000000 0.000000000000000D+00 17 Solar flux at ice/ocean surface iicesflx w/m2 1 1.000000000000000 0.000000000000000D+00 18 Non-solar flux at ice/ocean surface iicenflx w/m2 1 1.000000000000000 0.000000000000000D+00 19 Snow precipitation isnowpre kg/day 1 1.000000000000000 0.000000000000000D+00 }}} Tue Jan 7 15:43:32 2008 {{{ - For the 10 years run, use monthly values for precip and snow without time interpolation between months because it is not well done in flx_core.h90 for leapyear }}} Mon Jan 7 11:30:30 2008 {{{ - when switching to nbit_cmp=0 one must force the field erp(:,:) to zero in the reference code oce_sbc_dmp() subroutine to avoid SSS restoring when key_dtasal is active since it doesn't occur in the New SBC module. - the switch of ln_limdyn=.true. seems also good. }}} Have a look here to see some difference plots: [wiki:private/NewSurfaceModule] Thu Jan 3 17:24:23 2008 {{{ - The bug below is replaced by the following lines into sbcblk_core.F90 emp (:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) emps(:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) as before and into limsbc.F90 zemp = + emp(ji,jj) * frld(ji,jj) & ! e-p budget over open ocean fraction & - 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 step & + rdmsnif(ji,jj) / rdt_ice ! freshwaterflux due to snow melting - Potential BUG in sbcblk_core.F90, add the following lines concerning the emp() & emps() computation !CT start IF( lk_ice_lim ) THEN !CDIR COLLAPSE emp (:,:) = zevap(:,:) emps(:,:) = zevap(:,:) ELSE !CDIR COLLAPSE emp (:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) emps(:,:) = zevap(:,:) - sf(jp_prec)%fnow(:,:) * tmask(:,:,1) ENDIF !CT end because in limsbc.F90 we do: zemp = + emp(ji,jj) * frld(ji,jj) & ! e-p budget over open ocean fraction & - tprecip(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 step & + rdmsnif(ji,jj) / rdt_ice ! freshwaterflux due to snow melting - in step.F90, line "adatrj = adatrj + rdt/86400._wp" seems to be useless, to remove ??? - modification in daymod.F90 to ensure restartability. test aver 14 days with ORCA2_LIM: check OK - 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 - Remove useless CALL to day(nit000) into opa.F90 module since it is done in istate_init CALL day(-1) }}} Tue Nov 6 16:00:30 2007 {{{ - modifcations to perfom into the sbcana.F90 module for the GYRE configuration: }}} Mon Nov 5 16:00:30 2007 {{{ - 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 step & + 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 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 OVER OCEAN | - 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) }}} {{{ - 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 {{{ - which value of roatation angle angv should be applied to the wind stress & to the sea-ice velocity ? - 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 }}} ----