68 | | ==== (0) stylistic modification ==== |
69 | | |
70 | | style changes only have been put in '''revision 1855'''. |
71 | | |
72 | | Nevertheless we have return back to the original revision 1850 from which we start from the trunk. The style changes we be re-added at the end of the development, after the testing phase. |
73 | | |
74 | | The following is thus done directly from the trunk. |
75 | | |
76 | | |
77 | | ==== (1) heat content of Freezing/Melting ice ==== |
78 | | |
79 | | In LIM2 only, the computation of the heat content of F/M ice is added (this is already done in LIM3 which is based on internal enrgy conservation, like CICE). The changes exactly mirror the changes introduced at NOCS in NEMO v3.0 when implementing first the sea-ice embedment. The basic idea is to reference at rt0 all the mass exchanges between ice and ocean. |
80 | | |
81 | | NB: since emps becomes the salt flux, it is generally zero except with the salt exchange at the ocean-ice interface and when a SSS restoring in salinity is used (not when a equivalent freshwater flux formulation is used for the SSS restoring). Therefore emps done not appear anymore in all the sbc routine,. It is only set to zero in sbc_init, set to the ice-ocean salt flux in limsbc(_2), and modified in sbcssr if SSS retoring is used. |
82 | | |
83 | | '''LIM2''' : the modules involved in the change are : (see also the '''revision 1858''') |
84 | | |
85 | | • '''ice_2.F90''' : add arrays to describe the heat content associated with both snow and ice mass changes and also change the name of the mass changes. Thus the following lines : |
| 53 | ==== (0) stylistic modification ==== |
| 54 | style changes only have been put in ''' revision 1855''' . |
| 55 | |
| 56 | Nevertheless we have return back to the original revision 1850 from which we start from the trunk. The style changes we be re-added at the end of the development, after the testing phase. |
| 57 | |
| 58 | The following is thus done directly from the trunk. |
| 59 | |
| 60 | ==== (1) heat content of Freezing/Melting ice ==== |
| 61 | In LIM2 only, the computation of the heat content of F/M ice is added (this is already done in LIM3 which is based on internal enrgy conservation, like CICE). The changes exactly mirror the changes introduced at NOCS in NEMO v3.0 when implementing first the sea-ice embedment. The basic idea is to reference at rt0 all the mass exchanges between ice and ocean. |
| 62 | |
| 63 | NB: since emps becomes the salt flux, it is generally zero except with the salt exchange at the ocean-ice interface and when a SSS restoring in salinity is used (not when a equivalent freshwater flux formulation is used for the SSS restoring). Therefore emps done not appear anymore in all the sbc routine,. It is only set to zero in sbc_init, set to the ice-ocean salt flux in limsbc(_2), and modified in sbcssr if SSS retoring is used. |
| 64 | |
| 65 | ''' LIM2''' : the modules involved in the change are : (see also the ''' revision 1858''' ) |
| 66 | |
| 67 | • ''' ice_2.F90''' : add arrays to describe the heat content associated with both snow and ice mass changes and also change the name of the mass changes. Thus the following lines : |
98 | | • '''thd_ice_2.F90''' : associated 1D array names (rdsnif_1d, rdmicif_1d) have been changed into (rdm_snw_1d, rdm_ice_1d) and (rdq_snw_1d, rdq_ice_1d) have been added. |
99 | | |
100 | | • '''limthd_2.F90''' : introduce the new variable names, and pass the new variables (rdq_snw, rdq_ice) to the lim_thd_zdf and lim_thd_lac routines |
101 | | |
102 | | Note 1: we suppress the change of sst_m from Celcius to Kelvin and vice versa by adding a " + rt0 " at the 2 places it is used. |
103 | | |
104 | | Note 2: zfontn has been suppressed as the heat associated with the melting of solid precipitation is now added to qns in sbc modules ('''==>> TO BE DONE in SBC''') |
105 | | |
106 | | • '''limthd_lac_2.F90''' : introduce the new variable name (rdm_ice), and add the update of rdq_ice : the last DO loop of lim_thd_lac routine is transformed as follows : |
| 80 | • ''' thd_ice_2.F90''' : associated 1D array names (rdsnif_1d, rdmicif_1d) have been changed into (rdm_snw_1d, rdm_ice_1d) and (rdq_snw_1d, rdq_ice_1d) have been added. |
| 81 | |
| 82 | • ''' limthd_2.F90''' : introduce the new variable names, and pass the new variables (rdq_snw, rdq_ice) to the lim_thd_zdf and lim_thd_lac routines |
| 83 | |
| 84 | Note 1: we suppress the change of sst_m from Celcius to Kelvin and vice versa by adding a " + rt0 " at the 2 places it is used. |
| 85 | |
| 86 | Note 2: zfontn has been suppressed as the heat associated with the melting of solid precipitation is now added to qns in sbc modules (''' ==>> TO BE DONE in SBC''' ) |
| 87 | |
| 88 | • ''' limthd_lac_2.F90''' : introduce the new variable name (rdm_ice), and add the update of rdq_ice : the last DO loop of lim_thd_lac routine is transformed as follows : |
240 | | z1_rau0 implies changes in '''dynzdf_exp.F90''' ; '''dynzdf_imp.F90''' and '''eosbn2.F90''' |
241 | | |
242 | | r1_rau0_rcp implies changes in '''trabbc.F90''' ; '''traqsr.F90''' and '''eosbn2.F90''' |
243 | | |
244 | | CAUTION : there is a need to homogenize the definition of constant for sea-ice at least between LIM-2 and LIM-3. This must be coordonated with CICE variables |
245 | | |
246 | | |
247 | | ==== (2) LIM-3 specific changes see '''revision XXXX''' ==== |
248 | | |
249 | | In LIM3 case, the problem is somewhat different. Indeed, LIM3 is written in an energy conserving way (Bitz & Lipscomb 1999). Therefore the heat exchanged in both atmosphere and ocean is the internal energy (i.e. the heat flux through the interface + the heat content of the mass flux referenced to rt0). There is no need to introduce rdq_ice and rdq_snw fields. |
250 | | |
251 | | Five key elements have been changed : |
252 | | |
253 | | '''1- Addition of internal energy of snowfall over the ice'''. |
254 | | Reason: Tatm is used inside lim3 to compute the internal energy of snowfall. In coupled mode this will not be possible. Therefore, and in better agreement with SBC philosophy, we introduce qen_snw provided by sbcblk_c.. or sbccpl. |
255 | | |
256 | | • '''sbc_ice.F90''' : add the internal energie of snow in both LIM2 and LIM3 cases (even if in lim3 it will not be used) : |
| 221 | z1_rau0 implies changes in ''' dynzdf_exp.F90''' ; ''' dynzdf_imp.F90''' and ''' eosbn2.F90''' |
| 222 | |
| 223 | r1_rau0_rcp implies changes in ''' trabbc.F90''' ; ''' traqsr.F90''' and ''' eosbn2.F90''' |
| 224 | |
| 225 | CAUTION : there is a need to homogenize the definition of constant for sea-ice at least between LIM-2 and LIM-3. This must be coordonated with CICE variables |
| 226 | |
| 227 | ==== (2) LIM-3 specific changes see !'''revision XXXX!''' ==== |
| 228 | In LIM3 case, the problem is somewhat different. Indeed, LIM3 is written in an energy conserving way (Bitz & Lipscomb 1999). Therefore the heat exchanged in both atmosphere and ocean is the internal energy (i.e. the heat flux through the interface + the heat content of the mass flux referenced to rt0). There is no need to introduce rdq_ice and rdq_snw fields. |
| 229 | |
| 230 | Five key elements have been changed : |
| 231 | |
| 232 | ''' 1- Addition of internal energy of snowfall over the ice''' . Reason: Tatm is used inside lim3 to compute the internal energy of snowfall. In coupled mode this will not be possible. Therefore, and in better agreement with SBC philosophy, we introduce qen_snw provided by sbcblk_c.. or sbccpl. |
| 233 | |
| 234 | • ''' sbc_ice.F90''' : add the internal energie of snow in both LIM2 and LIM3 cases (even if in lim3 it will not be used) : |
299 | | |
300 | | |
301 | | '''2- Change in the snowfall partition between leads and ice'''. |
302 | | Reason: in LIM3 part of the snow that fall over ice is transported by the wind and kept in lead area. The parameterisation in coded deeply in LIM3 routine, whereas in coupled mode we need to have the information in sbccpl. Furthermore, with the partitioning at sbc level, LIM2 can also benefite from it. |
303 | | |
304 | | Introduce betas in the SBC, no more in LIM-3 alone. |
305 | | |
306 | | '''reason (1) :''' make it available in coupled mode (sbccpl.F90 will have to use it) ==>> Following change in LIM3 & sbccpl |
307 | | |
308 | | • '''sbc_oce.F90,sbcmod.F90, ice.F90 ''' : in namelist namsbc, add the following variable: |
| 277 | ''' 2- Change in the snowfall partition between leads and ice''' . Reason: in LIM3 part of the snow that fall over ice is transported by the wind and kept in lead area. The parameterisation in coded deeply in LIM3 routine, whereas in coupled mode we need to have the information in sbccpl. Furthermore, with the partitioning at sbc level, LIM2 can also benefite from it. |
| 278 | |
| 279 | Introduce betas in the SBC, no more in LIM-3 alone. |
| 280 | |
| 281 | ''' reason (1) :''' make it available in coupled mode (sbccpl.F90 will have to use it) ==>> Following change in LIM3 & sbccpl |
| 282 | |
| 283 | • ''' sbc_oce.F90,sbcmod.F90, ice.F90 ''' : in namelist namsbc, add the following variable: |
365 | | Notes : (1) we now update here the snow partition between ice and ocean. (2) both qen_snw and sprecip are modified: suppression of partitioning in other limthd_... modules. (3) the line starting with the comment '!!gm ?' is there to emphasise a potential '''BUG'''. Potential because I'm not completely sure. see just below. (4) this include a bug correction, see just below: |
366 | | |
367 | | '''BUG''' correction : In LIM-3 a betas exponent has been introduced when computing the solid precipitation over the sea ice. Part of the snow that falls over sea-ice is put in the lead areas by the wind. Nevertheless, the latent heat flux due to snow melting is computed with sprecip *(1-at_i) whereas the actual solid precipitation over lead area is sprecip*(1-at_i**betas). If betas /=1, some latent heat is missing (see the ticket open on that purpose #670). |
368 | | |
369 | | '''POTENTIAL BUG''' It seems to me that the among of heat exchange through turbulent fluxes between the ice and the ocean should be fdtcn(ji,jj) * za_i, and not fdtcn(ji,jj) * za_o. Indeed the ice-ocean surface of contact is proportional to at_i (=za_i), not za_o ! '''===>> TO BE CHECKED with Martin''' |
370 | | |
371 | | • '''limthd_dh.F90 ''' : remove the snow partitioning: lines |
| 339 | Notes : (1) we now update here the snow partition between ice and ocean. (2) both qen_snw and sprecip are modified: suppression of partitioning in other limthd_... modules. (3) the line starting with the comment '!!gm ?' is there to emphasise a potential ''' BUG''' . Potential because I'm not completely sure. see just below. (4) this include a bug correction, see just below: |
| 340 | |
| 341 | ''' BUG''' correction : In LIM-3 a betas exponent has been introduced when computing the solid precipitation over the sea ice. Part of the snow that falls over sea-ice is put in the lead areas by the wind. Nevertheless, the latent heat flux due to snow melting is computed with sprecip *(1-at_i) whereas the actual solid precipitation over lead area is sprecip*(1-at_i**betas). If betas /=1, some latent heat is missing (see the ticket open on that purpose #670 ). |
| 342 | |
| 343 | ''' POTENTIAL BUG''' It seems to me that the among of heat exchange through turbulent fluxes between the ice and the ocean should be fdtcn(ji,jj) * za_i, and not fdtcn(ji,jj) * za_o. Indeed the ice-ocean surface of contact is proportional to at_i (=za_i), not za_o ! ''' ===>> TO BE CHECKED with Martin''' |
| 344 | |
| 345 | • ''' limthd_dh.F90 ''' : remove the snow partitioning: lines |
390 | | • '''sbccpl.F90 ''' : add the partitioning of snow : |
391 | | |
392 | | '''reason (2) :''' make it also avalable in LIM-2. ==>> the Following change is LIM-2 |
393 | | |
394 | | • '''limthd_2.F90 ''' : remove the lecture from namicethd namelist. Change the budget over lead from: |
395 | | |
396 | | |
397 | | '''3- Modify the salt flux computation from an equivalent freshwater flux to a salt flux''' |
398 | | |
399 | | '''4- update the ice-ocean interface to salt flux''' |
400 | | |
401 | | '''5- Add the coupled case in the interface ice-atmos and atmos-ocean''' |
402 | | |
403 | | |
404 | | |
405 | | '''BUG''' correction : limthd : use fse3t_m instead of fse3t |
406 | | |
407 | | '''==>> ONGOING work''' |
408 | | |
409 | | ==== (3) Non-solar flux including the heat content of mass exchanges (see '''revision 1859''') ==== |
410 | | |
411 | | the definition of qns is modified as follows: the non solar part of the surface heat flux takes now also into account the heat content changes due to the change in volume associated with evaporation, precipitation, ice freezing and ice melting. This heat content is evaluated using the temperature (expressed in Celcius) of the mass of water exchanged between the different media (ocean, atmosphere and ice). |
412 | | |
413 | | Note that the latent heat flux associated to the meltin of solid precipitation is now taken into account directly in qns in sbc... routines, instead of been added in limthd(_2) (cf. step (1)) |
414 | | |
415 | | • ocean-atmosphere mass exchanges : |
416 | | |
417 | | # liquid precipitation are assumed to be at the air temperature expressed in Celcius) |
418 | | |
419 | | # solid precipitation are assumed to be at least below the the melting temperature of snow (rtt_snow) : min( Tair , rtt_snow ) |
420 | | |
421 | | # evaporation are at the SST. Note that sst_m is used. This is thus different from the former implicit value assumed for both precip and evap (use of tn in trasbc.F90) |
422 | | |
423 | | |
424 | | We therefore need to add the air temperature to the sea-ice, change the definition of emps (now a salt flux), and add the heat content of the mass flux (emp) to the non-solar heat flux. The associated modified modules are : sbcmod.F90 ; sb |
425 | | |
426 | | • '''sbcmod.F90''' : initialize emps to zero. The following lines have been added |
| 364 | • ''' sbccpl.F90 ''' : add the partitioning of snow : |
| 365 | |
| 366 | ''' reason (2) :''' make it also avalable in LIM-2. ==>> the Following change is LIM-2 |
| 367 | |
| 368 | • ''' limthd_2.F90 ''' : remove the lecture from namicethd namelist. Change the budget over lead from: |
| 369 | |
| 370 | ''' 3- Modify the salt flux computation from an equivalent freshwater flux to a salt flux''' |
| 371 | |
| 372 | ''' 4- update the ice-ocean interface to salt flux''' |
| 373 | |
| 374 | ''' 5- Add the coupled case in the interface ice-atmos and atmos-ocean''' |
| 375 | |
| 376 | ''' BUG''' correction : limthd : use fse3t_m instead of fse3t |
| 377 | |
| 378 | ''' ==>> ONGOING work''' |
| 379 | |
| 380 | ==== (3) Non-solar flux including the heat content of mass exchanges (see !'''revision 1859!''') ==== |
| 381 | the definition of qns is modified as follows: the non solar part of the surface heat flux takes now also into account the heat content changes due to the change in volume associated with evaporation, precipitation, ice freezing and ice melting. This heat content is evaluated using the temperature (expressed in Celcius) of the mass of water exchanged between the different media (ocean, atmosphere and ice). |
| 382 | |
| 383 | Note that the latent heat flux associated to the meltin of solid precipitation is now taken into account directly in qns in sbc... routines, instead of been added in limthd(_2) (cf. step (1)) |
| 384 | |
| 385 | • ocean-atmosphere mass exchanges : |
| 386 | |
| 387 | # liquid precipitation are assumed to be at the air temperature expressed in Celcius) |
| 388 | |
| 389 | # solid precipitation are assumed to be at least below the the melting temperature of snow (rtt_snow) : min( Tair , rtt_snow ) |
| 390 | |
| 391 | # evaporation are at the SST. Note that sst_m is used. This is thus different from the former implicit value assumed for both precip and evap (use of tn in trasbc.F90) |
| 392 | |
| 393 | We therefore need to add the air temperature to the sea-ice, change the definition of emps (now a salt flux), and add the heat content of the mass flux (emp) to the non-solar heat flux. The associated modified modules are : sbcmod.F90 ; sb |
| 394 | |
| 395 | • ''' sbcmod.F90''' : initialize emps to zero. The following lines have been added |
498 | | • '''sbccpl.F90''' : the latent flux of solid precipitation is already taken into account. The heat content of the mass flux [precip. - evap (-runoff) (-calving)] should be added but only over open ocean (the modification does not concern the surface ice fluxes). It is not a simple story. To be perfectly conservative between atmos. and ocean, the atmosphere should provide the heat content associated with the mass flux. This is not done with the current atmospheric component used. Therefore an approximation should be done: |
499 | | |
500 | | # evaporation : Since the atmosphere has seen the mean SST over the last coupling time interval. This previous SST is the one that should be used to compute the heat content of evaporation. It is not available but can be added to sbcssm module and in its restart. For the moment, we simply use the sst_m field. |
501 | | |
502 | | # precipitation : as in former forced runs, the temperature of precipitation is assumed to be at the SST: we use sst_m field. |
503 | | |
504 | | # runoff & calving : use sst_m as we have no better information |
505 | | |
506 | | In sbc_cpl_rcv routine (ocean-atmos. only), move the emp part before the qns part and add the following lines |
| 467 | • ''' sbccpl.F90''' : the latent flux of solid precipitation is already taken into account. The heat content of the mass flux [precip. - evap (-runoff) (-calving)] should be added but only over open ocean (the modification does not concern the surface ice fluxes). It is not a simple story. To be perfectly conservative between atmos. and ocean, the atmosphere should provide the heat content associated with the mass flux. This is not done with the current atmospheric component used. Therefore an approximation should be done: |
| 468 | |
| 469 | # evaporation : Since the atmosphere has seen the mean SST over the last coupling time interval. This previous SST is the one that should be used to compute the heat content of evaporation. It is not available but can be added to sbcssm module and in its restart. For the moment, we simply use the sst_m field. |
| 470 | |
| 471 | # precipitation : as in former forced runs, the temperature of precipitation is assumed to be at the SST: we use sst_m field. |
| 472 | |
| 473 | # runoff & calving : use sst_m as we have no better information |
| 474 | |
| 475 | In sbc_cpl_rcv routine (ocean-atmos. only), move the emp part before the qns part and add the following lines |
533 | | • '''sbcana.F90 ; sbcflx.F90 ; sbcfwb.F90 ; sbcrnf.F90''' : add in qns the heat content of the mass flux taken at SST. immediate changes |
534 | | |
535 | | • '''sbcssr''' : add a change in qns if the SSS restoring is converted into an emp ; update emps as a salt flux is SSS restoring is just a salinity restoring term |
536 | | |
537 | | |
538 | | |
539 | | |
540 | | |
541 | | |
542 | | |
543 | | ==== (4) Update ocean forcing and ice forcing ==== |
544 | | |
545 | | see '''revision 1859''' except for LIM-3 (limsbc.F90) updated in '''revision XXXX''' |
546 | | |
547 | | Modification of trasbc and limsbc(_2) modules in order to take into account the above changes (heat content of water exchanges (LIM2) and explicit salt flux (LIM2 & 3) and coupled interface for LIM3) |
548 | | |
549 | | • ocean-atmosphere mass exchanges : In the un-approximated case (lk_vvl=T) the ocean receives at its surface (1) a salt flux associate with Freezing and Melting of sea-ice, and (2) a heat flux which includes the budget of the heat content of all mass exchanged with the atmosphere and sea-ice. In the linear free surface case (lk_vvl=F), the model volume of the ocean is assumed to be constant, therefore an extra term appears in both T and S forcing term, the concentration/dilution term : the volume (associated to mass flux) removed or add to the ocean is replaced by a same volume of ocean water at Tn and Sn, so that the model ocean volume remains constant. |
550 | | |
551 | | '''trasbc.F90''' T and S forcing terms becomes symmetric. The following lines : |
| 502 | • ''' sbcana.F90 ; sbcflx.F90 ; sbcfwb.F90 ; sbcrnf.F90''' : add in qns the heat content of the mass flux taken at SST. immediate changes |
| 503 | |
| 504 | • ''' sbcssr''' : add a change in qns if the SSS restoring is converted into an emp ; update emps as a salt flux is SSS restoring is just a salinity restoring term |
| 505 | |
| 506 | ==== (4) Update ocean forcing and ice forcing ==== |
| 507 | see ''' revision 1859''' except for LIM-3 (limsbc.F90) updated in ''' revision XXXX''' |
| 508 | |
| 509 | Modification of trasbc and limsbc(_2) modules in order to take into account the above changes (heat content of water exchanges (LIM2) and explicit salt flux (LIM2 & 3) and coupled interface for LIM3) |
| 510 | |
| 511 | • ocean-atmosphere mass exchanges : In the un-approximated case (lk_vvl=T) the ocean receives at its surface (1) a salt flux associate with Freezing and Melting of sea-ice, and (2) a heat flux which includes the budget of the heat content of all mass exchanged with the atmosphere and sea-ice. In the linear free surface case (lk_vvl=F), the model volume of the ocean is assumed to be constant, therefore an extra term appears in both T and S forcing term, the concentration/dilution term : the volume (associated to mass flux) removed or add to the ocean is replaced by a same volume of ocean water at Tn and Sn, so that the model ocean volume remains constant. |
| 512 | |
| 513 | ''' trasbc.F90''' T and S forcing terms becomes symmetric. The following lines : |
660 | | LIM-3 : '''limsbc.F90''' : see '''revision XXX'''. |
661 | | Add soce_r and sice_r as in LIM-2 case |
662 | | |
663 | | In routine '''lim_sbc_flx''' the computation of the heat, salt and mass fluxes has been completely revisited. In particular, the coupled case should be now OK, except for the albedo computation which has to be checked. |
664 | | |
665 | | The heat flux is now computed as follows: ''' ===>>>> CAUTION heat content still not added ! ''' |
| 621 | LIM-3 : ''' limsbc.F90''' : see ''' revision XXX''' . |
| 622 | Add soce_r and sice_r as in LIM-2 case |
| 623 | |
| 624 | In routine ''' lim_sbc_flx''' the computation of the heat, salt and mass fluxes has been completely revisited. In particular, the coupled case should be now OK, except for the albedo computation which has to be checked. |
| 625 | |
| 626 | The heat flux is now computed as follows: ''' ===>>>> CAUTION heat content still not added ! ''' |
754 | | |
755 | | '''(4) change emp and emps names''' |
756 | | |
757 | | The emps field is suppress by introducing '''fsalt''', the salt flux at the ocean surface (only non zero below sea-ice) |
758 | | |
759 | | A symmetric name is chosen for the emp : '''fmass'''. Indeed emp is a mass flux expressed in Kg/m^2^/s. its name emp is miss leading: emp does not only represent the Evaporation minus Precipitation budget, as it also include the freezing or melting of sea-ice, and also sometime the runoff. Therefore using fmass appears more meaningful. |
760 | | |
761 | | in case of linear free surface (no key_vvl defined), the salt flux take into account the concentration/dilution term |
762 | | |
763 | | |
764 | | '''(5) update other parts of the system : C1D_SRC ; NST_SRC ; OFF_SRC ; TOP_SRC ...'' |
765 | | |
| 715 | '''(4) change emp and emps names''' |
| 716 | |
| 717 | The emps field is suppress by introducing ''' fsalt''' , the salt flux at the ocean surface (only non zero below sea-ice) |
| 718 | |
| 719 | A symmetric name is chosen for the emp : ''' fmass''' . Indeed emp is a mass flux expressed in Kg/m^ 2^ /s. its name emp is miss leading: emp does not only represent the Evaporation minus Precipitation budget, as it also include the freezing or melting of sea-ice, and also sometime the runoff. Therefore using fmass appears more meaningful. |
| 720 | |
| 721 | in case of linear free surface (no key_vvl defined), the salt flux take into account the concentration/dilution term |
| 722 | |
| 723 | '''(5) update other parts of the system : C1D_SRC ; NST_SRC ; OFF_SRC ; TOP_SRC ...'' ''''' |
770 | | • LIM-3 needs the air temperature ... This is related to the heat content change when Melting the fallen snow. Think how to take this in a different way, so that in coupled mode it works ! |
771 | | |
772 | | • introduce (as was done for sea-ice embedment) the air temperature as an argument of both blk_ice_core and blk_ice_clio routines |
773 | | |
774 | | • Philosophical change: in near future it appears that the use of key_vvl should be replaced by key_linssh. In other words, the defaut option of NEMO will be a non-linear free surface (and thus variable volume for the model levels). This has to be discussed prior to its implementation. |
775 | | |
776 | | • In the same idea : the embedded sea-ice should become the defaut case, with in option the 2 levitating cases. A test should then force a levitating sea-ice if key_linssh defined |
777 | | |
778 | | • Idea for LIM-3 optimisation : instead of 2D => 1D transformation, is it possible to introduce a 3D (including ice categories) => 1D transformation. Gain: longer vector so clear in vector computer, less obvious on scalar one, except that the limthd... will become 1 gigantic done loop => better also for scalar. |
| 728 | |
| 729 | • LIM-3 needs the air temperature ... This is related to the heat content change when Melting the fallen snow. Think how to take this in a different way, so that in coupled mode it works ! |
| 730 | |
| 731 | • introduce (as was done for sea-ice embedment) the air temperature as an argument of both blk_ice_core and blk_ice_clio routines |
| 732 | |
| 733 | • Philosophical change: in near future it appears that the use of key_vvl should be replaced by key_linssh. In other words, the defaut option of NEMO will be a non-linear free surface (and thus variable volume for the model levels). This has to be discussed prior to its implementation. |
| 734 | |
| 735 | • In the same idea : the embedded sea-ice should become the defaut case, with in option the 2 levitating cases. A test should then force a levitating sea-ice if key_linssh defined |
| 736 | |
| 737 | • Idea for LIM-3 optimisation : instead of 2D => 1D transformation, is it possible to introduce a 3D (including ice categories) => 1D transformation. Gain: longer vector so clear in vector computer, less obvious on scalar one, except that the limthd... will become 1 gigantic done loop => better also for scalar. |
782 | | • in coupled mode, the atmosphere and the ocean must share the same latent heat flux of solid precipitation |
783 | | |
784 | | • in coupled mode, the atmosphere should provide not only the mass flux [e-p(-runoff)(-calvin)] but also the heat content associated with this mass flux computed with a temperature in Celcius. |
| 741 | • in coupled mode, the atmosphere and the ocean must share the same latent heat flux of solid precipitation |
| 742 | |
| 743 | • in coupled mode, the atmosphere should provide not only the mass flux [e-p(-runoff)(-calvin)] but also the heat content associated with this mass flux computed with a temperature in Celcius. |
| 744 | |
| 745 | = LIM-3 changes (oct 2012, !r3517) = |
| 746 | Changes done in LIM3 : |
| 747 | |
| 748 | 1- '''Almost all routines''' : r1_rdtice = 1 / rdt_ice has been introduced in ice.F90 and is used systematically in all LIM3 routines (multiplication instead of a division) |
| 749 | |
| 750 | 2- salinity related ice routine : case num_sal=4 and 5 has been suppressed. They were test cases for on of Martin's papers. Useless in the reference version[[BR]]this involves changes in : ice.F90 ; limitd_me, limited_th, limsbc, limthd_dh, .... |
| 751 | |
| 752 | 3- Change equivalente freshwater fluxes into a salt flux and a mass flux (similar to a volume flux in boussinesq approx.) |
| 753 | |
| 754 | '''limsbc.F90''' : large changes: |
| 755 | |
| 756 | '''limitd_me.F90''' : lim_itd_me_ridgeshift subroutine. After the following lines: |
| 757 | |
| 758 | {{{ |
| 759 | !----------------------------------------------------------------- |
| 760 | ! 3.5) Compute properties of new ridges |
| 761 | !----------------------------------------------------------------- |
| 762 | !------------- |
| 763 | ! Salinity |
| 764 | !------------- |
| 765 | smsw(ji,jj) = sss_m(ji,jj) * vsw(ji,jj) * rhoic / rau0 ! salt content of water frozen in voids |
| 766 | |
| 767 | zsrdg2 = srdg1(ji,jj) + smsw(ji,jj) ! salt content of new ridge |
| 768 | |
| 769 | srdg2(ji,jj) = MIN( s_i_max * vrdg2(ji,jj) , zsrdg2 ) ! impose a maximum salinity |
| 770 | |
| 771 | ! ! excess of salt is flushed into the ocean |
| 772 | fsalt_rpo(ji,jj) = fsalt_rpo(ji,jj) + ( zsrdg2 - srdg2(ji,jj) ) * rhoic / rdt_ice |
| 773 | }}} |
| 774 | we add the associated mass flux (from the ocean to sea ice) that is now required to specified |
| 775 | |
| 776 | {{{ |
| 777 | rdm_ice(ji,jj) = rdm_ice(ji,jj) + vsw(ji,jj) * rhoic / rau0 ! increase in ice volume du to seawater frozen in voids |
| 778 | }}} |
| 779 | '''limthd_dh.F90''': the following concentration dilution term (or virtual salt flux) |
| 780 | |
| 781 | {{{ |
| 782 | ! contribution to ice-ocean salt flux |
| 783 | zji = MOD( npb(ji) - 1 , jpi ) + 1 |
| 784 | zjj = ( npb(ji) - 1 ) / jpi + 1 |
| 785 | zfsalt_melt(ji) = zfsalt_melt(ji) + ( sss_m(zji,zjj) - sm_i_b(ji) ) * a_i_b(ji) & |
| 786 | & * MIN( zdeltah(ji,jk) , 0.e0 ) * rhoic / rdt_ice |
| 787 | }}} |
| 788 | becomes a pure salt flux: |
| 789 | |
| 790 | {{{ |
| 791 | ! contribution to ice-ocean salt flux |
| 792 | zfsalt_melt(ji) = zfsalt_melt(ji) - sm_i_b(ji) * a_i_b(ji) * MIN( zdeltah(ji,jk) , 0._wp ) * rhoic * r1_rdtice |
| 793 | }}} |
| 794 | similar changes in to other places of the routine (lines 470's, 590's, 650's) |
| 795 | |
| 796 | == Remarks and TODO list: == |
| 797 | to be done: change the name of the salt fluxes: |
| 798 | |
| 799 | fsalt_res ==> sfx_res[[BR]] fsbri ==> sfx_bri[[BR]] fsalt_rpo ==> sfx_rpo[[BR]] fseqv ==> sfx_f_m or sfx_fmm |
| 800 | |
| 801 | Same hold for heat flux names that should start with qice_... ? |
| 802 | |
| 803 | introduce in phycst.F90 r1_rau0 = 1 / rau0 and use it every where in both OPA and LIM3 |
| 804 | |
802 | | ||Does this change preserve answers in your tested standard configurations (to the last bit) ?||!'''YES/NO !'''|| |
803 | | ||Does this change bit compare across various processor configurations. (1xM, Nx1 and MxN are recommended)||!'''YES/NO!'''|| |
804 | | ||Is this change expected to preserve answers in all possible model configurations?||!'''YES/NO!'''|| |
805 | | ||Is this change expected to preserve all diagnostics? [[BR]]!,,!''Preserving answers in model runs does not necessarily imply preserved diagnostics. !''||!'''YES/NO!'''|| |
| 822 | || Does this change preserve answers in your tested standard configurations (to the last bit) ? || !'''YES/NO !''' || |
| 823 | || Does this change bit compare across various processor configurations. (1xM, Nx1 and MxN are recommended) || !'''YES/NO!''' || |
| 824 | || Is this change expected to preserve answers in all possible model configurations? || !'''YES/NO!''' || |
| 825 | || Is this change expected to preserve all diagnostics? [[BR]]!,,!''Preserving answers in model runs does not necessarily imply preserved diagnostics. !'' || !'''YES/NO!''' || |