| 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 |
| 18 | DONE: - Ajouter le seuillage sur le calcul du flux de chaleur latente dans CORE comme c'est fait dans CLIO. |
| 19 | DONE: - Use the tmask(:,:) in the computatin of wind speed zwind_speed_t in sbcblk_core.F90 but replace (2. - tmask(:,:)) |
| 20 | in the computation of wind stress utau & vtau by (2. - MIN(tmask(i,j),tmask(i+1,j) ) ) (for utau in tis case) |
| 21 | 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 |
| 22 | DONE: - check freshwater budget |
| 23 | }}} |
| 24 | For 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), |
| 28 | check 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 | }}} |
| 36 | Thur 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 | |
| 40 | of 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 | }}} |
| 83 | Wed 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 | |
| 104 | Tue Jan 14 10:15:46 2008 |
| 105 | |
| 106 | Name of variables outputs by the sea-ice model. |
| 107 | |
| 108 | {{{ |
| 109 | lim_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 |
| 122 | 10 Sea surface salinity isssalin PSU 1 1.000000000000000 0.000000000000000D+00 |
| 123 | 11 Total flux at ocean surface iocetflx w/m2 1 1.000000000000000 0.000000000000000D+00 |
| 124 | 12 Solar flux at ocean surface iocesflx w/m2 1 1.000000000000000 0.000000000000000D+00 |
| 125 | 13 Non-solar flux at ocean surface iocwnsfl w/m2 1 1.000000000000000 0.000000000000000D+00 |
| 126 | 14 Salt flux at ocean surface iocesafl kg/m2/kt 1 1.000000000000000 0.000000000000000D+00 |
| 127 | 15 Wind stress u iocestru Pa 1 1.000000000000000 0.000000000000000D+00 |
| 128 | 16 Wind stress v iocestrv Pa 1 1.000000000000000 0.000000000000000D+00 |
| 129 | 17 Solar flux at ice/ocean surface iicesflx w/m2 1 1.000000000000000 0.000000000000000D+00 |
| 130 | 18 Non-solar flux at ice/ocean surface iicenflx w/m2 1 1.000000000000000 0.000000000000000D+00 |
| 131 | 19 Snow precipitation isnowpre kg/day 1 1.000000000000000 0.000000000000000D+00 |
| 132 | }}} |
| 133 | Tue 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 |
| 137 | months because it is not well done in flx_core.h90 for leapyear |
| 138 | }}} |
| 139 | Mon 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 |
| 143 | oce_sbc_dmp() subroutine to avoid SSS restoring when key_dtasal is active since it doesn't occur |
| 144 | in the New SBC module. |
| 145 | - the switch of ln_limdyn=.true. seems also good. |
| 146 | }}} |
| 147 | Have a look here to see some difference plots: [wiki:private/NewSurfaceModule] |
| 148 | |
| 149 | Thu 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) |
| 155 | as 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 |
| 174 | because 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 | }}} |
| 185 | Tue Nov 6 16:00:30 2007 |
| 186 | |
| 187 | {{{ |
| 188 | - modifcations to perfom into the sbcana.F90 module for the GYRE configuration: |
| 189 | }}} |
| 190 | Mon 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 |
| 202 | Schematic view of calling sequence with the new organisation |
| 203 | step | |
| 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 | }}} |
| 237 | Mon 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. |
| 241 | It 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 | }}} |
| 250 | Wed 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 | }}} |
| 258 | Wed Oct 31 14:59:05 2007 |
| 259 | |
| 260 | {{{ |
| 261 | - change nn_sst & nn_sss into nn_sstr & nn_sssr into sbcssr.F90 module |
| 262 | }}} |
| 263 | Thu 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: |
| 271 | nn_runoff = 1 !: runoffs flag |
| 272 | rn_hrnf = 0.e0 !: runoffs, depth over which enhanced vertical mixing is used |
| 273 | rn_avt_rnf = 0.e0 !: runoffs, value of the additional vertical mixing coef. [m2/s] |
| 274 | cn_dir = './' !: Root directory for location of ssr files |
| 275 | sn_rnf !: informations about the runoff file to be read |
| 276 | sn_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 | }}} |
| 279 | Tue 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 | ---- |