Changeset 8306
- Timestamp:
- 2017-07-10T12:18:03+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL
- Files:
-
- 3 deleted
- 32 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/DOC/Namelists/nambdy_dta
r7646 r8306 11 11 bn_tem = 'amm12_bdyT_tra', 24 , 'votemper', .true. , .false. , 'daily' , '' , '' , '' 12 12 bn_sal = 'amm12_bdyT_tra', 24 , 'vosaline', .true. , .false. , 'daily' , '' , '' , '' 13 ! for lim214 ! bn_frld = 'amm12_bdyT_ice', 24 , 'ileadfra', .true. , .false. , 'daily' , '' , '' , ''15 ! bn_hicif = 'amm12_bdyT_ice', 24 , 'iicethic', .true. , .false. , 'daily' , '' , '' , ''16 ! bn_hsnif = 'amm12_bdyT_ice', 24 , 'isnowthi', .true. , .false. , 'daily' , '' , '' , ''17 13 ! for lim3 18 14 ! bn_a_i = 'amm12_bdyT_ice', 24 , 'ileadfra', .true. , .false. , 'daily' , '' , '' , '' -
branches/2017/dev_r8183_ICEMODEL/DOC/Namelists/namsbc
r6997 r8306 23 23 ! = 2 Redistribute a single flux over categories (coupled mode only) 24 24 ! Sea-ice : 25 nn_ice = 2! =0 no ice boundary condition ,25 nn_ice = 3 ! =0 no ice boundary condition , 26 26 ! =1 use observed ice-cover , 27 ! = 2 ice-model used ("key_lim3", "key_lim2", "key_cice")27 ! =3-4 ice-model used ("key_lim3", "key_cice") 28 28 nn_ice_embd = 1 ! =0 levitating ice (no mass exchange, concentration/dilution effect) 29 29 ! =1 levitating ice with mass and salt exchange but no presure effect -
branches/2017/dev_r8183_ICEMODEL/DOC/TexFiles/Chapters/Chap_SBC.tex
r7646 r8306 1266 1266 ice-ocean fluxes, that are combined with the air-sea fluxes using the ice fraction of 1267 1267 each model cell to provide the surface ocean fluxes. Note that the activation of a 1268 sea-ice model is is done by defining a CPP key (\key{lim 2}, \key{lim3} or \key{cice}).1268 sea-ice model is is done by defining a CPP key (\key{lim3} or \key{cice}). 1269 1269 The activation automatically overwrites the read value of nn{\_}ice to its appropriate 1270 1270 value ($i.e.$ $2$ for LIM-2, $3$ for LIM-3 or $4$ for CICE). -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/ORCA2_LIM3_PISCES/EXP00/1_namelist_cfg
r8291 r8306 43 43 nn_ice = 3 ! =0 no ice boundary condition , 44 44 ! =1 use observed ice-cover , 45 ! = 2 ice-model used ("key_lim3" or "key_lim2)45 ! =3 ice-model used ("key_lim3") 46 46 ln_rnf = .false. ! runoffs (T => fill namsbc_rnf) 47 47 ln_ssr = .false. ! Sea Surface Restoring on T and/or S (T => fill namsbc_ssr) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/SHARED/field_def_nemo-lim.xml
r8294 r8306 11 11 12 12 <field_group id="SBC" grid_ref="grid_T_2D" > <!-- time step automaticaly defined based on nn_fsbc --> 13 14 <!-- LIM2(only) fields -->15 <field id="qsr_ai_cea" long_name="Air-Ice downward solar heat flux (cell average)" standard_name="surface_downwelling_shortwave_flux_in_air" unit="W/m2" />16 <field id="qns_ai_cea" long_name="Air-Ice downward non-solar heat flux (cell average)" unit="W/m2" />17 <field id="qla_ai_cea" long_name="Air-Ice downward Latent heat flux (cell average)" standard_name="surface_downward_latent_heat_flux" unit="W/m2" />18 <field id="qsr_io_cea" long_name="Ice-Oce downward solar heat flux (cell average)" standard_name="net_downward_shortwave_flux_at_sea_water_surface" unit="W/m2" />19 <field id="qns_io_cea" long_name="Ice-Oce downward non-solar heat flux (cell average)" unit="W/m2" />20 <field id="iceprod_cea" long_name="Ice production (cell average)" unit="m/s" />21 <field id="iiceconc" long_name="Ice concentration" standard_name="sea_ice_area_fraction" unit="1" />22 <field id="ice_pres" long_name="Ice presence" unit="" />23 <field id="ist_cea" long_name="Ice surface temperature (cell average)" standard_name="surface_temperature" unit="degC" />24 <field id="ist_ipa" long_name="Ice surface temperature (ice presence average)" standard_name="surface_temperature" unit="degC" />25 <field id="u_imasstr" long_name="Sea-ice mass transport along i-axis" standard_name="sea_ice_x_transport" unit="kg/s" />26 <field id="v_imasstr" long_name="Sea-ice mass transport along j-axis" standard_name="sea_ice_y_transport" unit="kg/s" />27 13 28 14 <!-- SIMIP LIM fields --> -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/SHARED/namelist_ref
r8291 r8306 200 200 nn_ice = 3 ! =0 no ice boundary condition , 201 201 ! =1 use observed ice-cover , 202 ! = 2 to 4 : ice-model used (LIM2, LIM3 or CICE) ("key_lim3", "key_lim2",or "key_cice")202 ! =3 to 4 : ice-model used (LIM3 or CICE) ("key_lim3" or "key_cice") 203 203 nn_ice_embd = 1 ! =0 levitating ice (no mass exchange, concentration/dilution effect) 204 204 ! =1 levitating ice with mass and salt exchange but no presure effect … … 582 582 bn_tem = 'amm12_bdyT_tra', 24 , 'votemper', .true. , .false. , 'daily' , '' , '' , '' 583 583 bn_sal = 'amm12_bdyT_tra', 24 , 'vosaline', .true. , .false. , 'daily' , '' , '' , '' 584 ! for lim2585 ! bn_frld = 'amm12_bdyT_ice', 24 , 'ileadfra', .true. , .false. , 'daily' , '' , '' , ''586 ! bn_hicif = 'amm12_bdyT_ice', 24 , 'iicethic', .true. , .false. , 'daily' , '' , '' , ''587 ! bn_hsnif = 'amm12_bdyT_ice', 24 , 'isnowthi', .true. , .false. , 'daily' , '' , '' , ''588 584 ! for lim3 589 585 ! bn_a_i = 'amm12_bdyT_ice', 24 , 'ileadfra', .true. , .false. , 'daily' , '' , '' , '' -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/CONFIG/TEST_CASES/WAD/MY_SRC/bdyini.F90
r7610 r8306 351 351 IF(lwp) WRITE(numout,*) 352 352 353 #if defined key_lim2 354 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 355 SELECT CASE( cn_ice_lim(ib_bdy) ) 356 CASE('none') 357 IF(lwp) WRITE(numout,*) ' no open boundary condition' 358 dta_bdy(ib_bdy)%ll_frld = .false. 359 dta_bdy(ib_bdy)%ll_hicif = .false. 360 dta_bdy(ib_bdy)%ll_hsnif = .false. 361 CASE('frs') 362 IF(lwp) WRITE(numout,*) ' Flow Relaxation Scheme' 363 dta_bdy(ib_bdy)%ll_frld = .true. 364 dta_bdy(ib_bdy)%ll_hicif = .true. 365 dta_bdy(ib_bdy)%ll_hsnif = .true. 366 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 367 END SELECT 368 IF( cn_ice_lim(ib_bdy) /= 'none' ) THEN 369 SELECT CASE( nn_ice_lim_dta(ib_bdy) ) ! 370 CASE( 0 ) ; IF(lwp) WRITE(numout,*) ' initial state used for bdy data' 371 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' boundary data taken from file' 372 CASE DEFAULT ; CALL ctl_stop( 'nn_ice_lim_dta must be 0 or 1' ) 373 END SELECT 374 ENDIF 375 IF(lwp) WRITE(numout,*) 376 #elif defined key_lim3 353 #if defined key_lim3 377 354 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 378 355 SELECT CASE( cn_ice_lim(ib_bdy) ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
r8289 r8306 7 7 !! 3.0 ! 2008-03 (M. Vancoppenolle) LIM3 8 8 !! - ! 2008-11 (M. Vancoppenolle, S. Bouillon, Y. Aksenov) add surface tilt in ice rheolohy 9 !! 3.3 ! 2009-05 (G.Garric) addition of the lim2_evp cas9 !! 3.3 ! 2009-05 (G.Garric) addition of the evp cas 10 10 !! 3.4 ! 2011-01 (A. Porter) dynamical allocation 11 11 !! 3.5 ! 2012-08 (R. Benshila) AGRIF -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/NST_SRC/agrif_ice.F90
r7646 r8306 7 7 !! 3.6 ! 2016-05 (C. Rousset) Add LIM3 compatibility 8 8 !!---------------------------------------------------------------------- 9 #if defined key_agrif && defined key_lim2 10 !!---------------------------------------------------------------------- 11 !! 'key_agrif' AGRIF zoom 12 !!---------------------------------------------------------------------- 13 USE par_oce ! ocean parameters 14 15 IMPLICIT NONE 16 PRIVATE 17 18 PUBLIC agrif_ice_alloc ! routine called by nemo_init in nemogcm.F90 19 20 INTEGER, PUBLIC :: u_ice_id, v_ice_id, adv_ice_id 21 REAL(wp), PUBLIC :: lim_nbstep = 0. ! child time position in sea-ice model 22 #if defined key_lim2_vp 23 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:) :: u_ice_nst, v_ice_nst 24 #else 25 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: u_ice_oe, u_ice_sn !: boundaries arrays 26 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:) :: v_ice_oe, v_ice_sn !: " " 27 #endif 28 REAL(wp), PUBLIC, ALLOCATABLE, DIMENSION(:,:,:,:) :: adv_ice_oe, adv_ice_sn !: " " 29 30 !!---------------------------------------------------------------------- 31 !! NEMO/NST 3.3.4 , NEMO Consortium (2012) 32 !! $Id$ 33 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 34 !!---------------------------------------------------------------------- 35 36 CONTAINS 37 38 INTEGER FUNCTION agrif_ice_alloc() 39 !!---------------------------------------------------------------------- 40 !! *** FUNCTION agrif_ice_alloc *** 41 !!---------------------------------------------------------------------- 42 #if defined key_lim2_vp 43 ALLOCATE( u_ice_nst(jpi,jpj), v_ice_nst(jpi,jpj) , & 44 #else 45 ALLOCATE( u_ice_oe(4,jpj,2) , v_ice_oe(4,jpj,2) , & 46 & u_ice_sn(jpi,4,2) , v_ice_sn(jpi,4,2) , & 47 #endif 48 & adv_ice_oe (4,jpj,7,2) , adv_ice_sn (jpi,4,7,2) , & 49 & STAT = agrif_ice_alloc) 50 51 #if ! defined key_lim2_vp 52 u_ice_oe(:,:,:) = 0.e0 53 v_ice_oe(:,:,:) = 0.e0 54 u_ice_sn(:,:,:) = 0.e0 55 v_ice_sn(:,:,:) = 0.e0 56 #endif 57 adv_ice_oe (:,:,:,:) = 0.e0 58 adv_ice_sn (:,:,:,:) = 0.e0 59 ! 60 END FUNCTION agrif_ice_alloc 61 62 #elif defined key_agrif && defined key_lim3 9 #if defined key_agrif && defined key_lim3 63 10 !!---------------------------------------------------------------------- 64 11 !! 'key_agrif' AGRIF zoom -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/NST_SRC/agrif_user.F90
r8226 r8306 481 481 END SUBROUTINE agrif_declare_var 482 482 483 # if defined key_lim2484 SUBROUTINE Agrif_InitValues_cont_lim2485 !!----------------------------------------------------------------------486 !! *** ROUTINE Agrif_InitValues_cont_lim2 ***487 !!488 !! ** Purpose :: Initialisation of variables to be interpolated for LIM2489 !!----------------------------------------------------------------------490 USE Agrif_Util491 USE ice_2492 USE agrif_ice493 USE in_out_manager494 USE agrif_lim2_update495 USE agrif_lim2_interp496 USE lib_mpp497 !!498 IMPLICIT NONE499 !!----------------------------------------------------------------------500 501 ! 1. Declaration of the type of variable which have to be interpolated502 !---------------------------------------------------------------------503 CALL agrif_declare_var_lim2504 505 ! 2. First interpolations of potentially non zero fields506 !-------------------------------------------------------507 Agrif_SpecialValue=-9999.508 Agrif_UseSpecialValue = .TRUE.509 ! Call Agrif_Bc_variable(zadv ,adv_ice_id ,calledweight=1.,procname=interp_adv_ice )510 ! Call Agrif_Bc_variable(zvel ,u_ice_id ,calledweight=1.,procname=interp_u_ice )511 ! Call Agrif_Bc_variable(zvel ,v_ice_id ,calledweight=1.,procname=interp_v_ice )512 Agrif_SpecialValue=0.513 Agrif_UseSpecialValue = .FALSE.514 515 ! 3. Some controls516 !-----------------517 518 # if ! defined key_lim2_vp519 lim_nbstep = 1.520 CALL agrif_rhg_lim2_load521 CALL agrif_trp_lim2_load522 lim_nbstep = 0.523 # endif524 !RB mandatory but why ???525 ! IF( nbclineupdate /= nn_fsbc .AND. nn_ice == 2 )THEN526 ! CALL ctl_warn ('With ice model on child grid, nbclineupdate is set to nn_fsbc')527 ! nbclineupdate = nn_fsbc528 ! ENDIF529 CALL Agrif_Update_lim2(0)530 !531 END SUBROUTINE Agrif_InitValues_cont_lim2532 533 534 SUBROUTINE agrif_declare_var_lim2535 !!----------------------------------------------------------------------536 !! *** ROUTINE agrif_declare_var_lim2 ***537 !!538 !! ** Purpose :: Declaration of variables to be interpolated for LIM2539 !!----------------------------------------------------------------------540 USE agrif_util541 USE ice_2542 !!543 IMPLICIT NONE544 !!----------------------------------------------------------------------545 546 ! 1. Declaration of the type of variable which have to be interpolated547 !---------------------------------------------------------------------548 CALL agrif_declare_variable((/2,2,0/),(/3,3,0/),(/'x','y','N'/),(/1,1,1/),(/jpi,jpj, 7/),adv_ice_id )549 # if defined key_lim2_vp550 CALL agrif_declare_variable((/1,1/),(/3,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),u_ice_id)551 CALL agrif_declare_variable((/1,1/),(/3,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),v_ice_id)552 # else553 CALL agrif_declare_variable((/1,2/),(/2,3/),(/'x','y'/),(/1,1/),(/jpi,jpj/),u_ice_id)554 CALL agrif_declare_variable((/2,1/),(/3,2/),(/'x','y'/),(/1,1/),(/jpi,jpj/),v_ice_id)555 # endif556 557 ! 2. Type of interpolation558 !-------------------------559 CALL Agrif_Set_bcinterp(adv_ice_id ,interp=AGRIF_linear)560 CALL Agrif_Set_bcinterp(u_ice_id,interp1=Agrif_linear,interp2=AGRIF_ppm)561 CALL Agrif_Set_bcinterp(v_ice_id,interp1=AGRIF_ppm,interp2=Agrif_linear)562 563 ! 3. Location of interpolation564 !-----------------------------565 CALL Agrif_Set_bc(adv_ice_id ,(/0,1/))566 CALL Agrif_Set_bc(u_ice_id,(/0,1/))567 CALL Agrif_Set_bc(v_ice_id,(/0,1/))568 569 ! 5. Update type570 !---------------571 CALL Agrif_Set_Updatetype(adv_ice_id , update = AGRIF_Update_Average)572 CALL Agrif_Set_Updatetype(u_ice_id,update1 = Agrif_Update_Copy, update2 = Agrif_Update_Average)573 CALL Agrif_Set_Updatetype(v_ice_id,update1 = Agrif_Update_Average, update2 = Agrif_Update_Copy)574 !575 END SUBROUTINE agrif_declare_var_lim2576 # endif577 578 483 #if defined key_lim3 579 484 SUBROUTINE Agrif_InitValues_cont_lim3 … … 902 807 ! 903 808 IF( agrif_oce_alloc() > 0 ) CALL ctl_warn('agrif agrif_oce_alloc: allocation of arrays failed') 904 # if defined key_lim2905 IF( agrif_ice_alloc() > 0 ) CALL ctl_stop('agrif agrif_ice_alloc: allocation of arrays failed') ! only for LIM2 (not LIM3)906 # endif907 809 ! 908 810 END SUBROUTINE agrif_nemo_init -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ASM/asmbkg.F90
r6140 r8306 38 38 USE asmpar ! Parameters for the assmilation interface 39 39 USE zdfmxl ! mixed layer depth 40 #if defined key_lim241 USE ice_242 #endif43 40 #if defined key_lim3 44 41 USE ice … … 148 145 CALL iom_rstput( kt, nitdin_r, inum, 'sn' , tsn(:,:,:,jp_sal) ) 149 146 CALL iom_rstput( kt, nitdin_r, inum, 'sshn' , sshn ) 150 #if defined key_lim 2 || defined key_lim3147 #if defined key_lim3 151 148 IF( nn_ice == 2 .OR. nn_ice == 3 ) THEN 152 149 IF( ALLOCATED(frld) ) THEN -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r8030 r8306 35 35 USE in_out_manager ! I/O manager 36 36 USE lib_mpp ! MPP library 37 #if defined key_lim 238 USE ice _2 ! LIM237 #if defined key_lim3 38 USE ice, ONLY: htm_i, at_i, pfrld, phicif 39 39 #endif 40 40 USE sbc_oce ! Surface boundary condition variables. … … 809 809 INTEGER :: it 810 810 REAL(wp) :: zincwgt ! IAU weight for current time step 811 #if defined key_lim 2811 #if defined key_lim3 812 812 REAL(wp), DIMENSION(jpi,jpj) :: zofrld, zohicif, zseaicendg, zhicifinc ! LIM 813 813 REAL(wp) :: zhicifmin = 0.5_wp ! ice minimum depth in metres … … 831 831 ENDIF 832 832 ! 833 ! Sea-ice : LIM-3 case (to add) 834 ! 835 #if defined key_lim2 836 ! Sea-ice : LIM-2 case 837 zofrld (:,:) = frld(:,:) 838 zohicif(:,:) = hicif(:,:) 839 ! 840 frld = MIN( MAX( frld (:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 841 pfrld = MIN( MAX( pfrld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 842 fr_i(:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 843 ! 844 zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 833 ! Sea-ice : LIM-3 case 834 ! 835 #if defined key_lim3 836 zofrld (:,:) = 1._wp - at_i(:,:) 837 zohicif(:,:) = htm_i(:,:) 838 ! 839 at_i(:,:) = 1. - MIN( MAX( 1.-at_i(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 840 pfrld = MIN( MAX( pfrld(:,:) - seaice_bkginc(:,:) * zincwgt, 0.0_wp), 1.0_wp) 841 fr_i(:,:) = at_i(:,:) ! adjust ice fraction 842 ! 843 zseaicendg(:,:) = zofrld(:,:) - (1. - at_i(:,:)) ! find out actual sea ice nudge applied 845 844 ! 846 845 ! Nudge sea ice depth to bring it up to a required minimum depth 847 WHERE( zseaicendg(:,:) > 0.0_wp .AND. h icif(:,:) < zhicifmin )848 zhicifinc(:,:) = (zhicifmin - h icif(:,:)) * zincwgt846 WHERE( zseaicendg(:,:) > 0.0_wp .AND. htm_i(:,:) < zhicifmin ) 847 zhicifinc(:,:) = (zhicifmin - htm_i(:,:)) * zincwgt 849 848 ELSEWHERE 850 849 zhicifinc(:,:) = 0.0_wp … … 852 851 ! 853 852 ! nudge ice depth 854 h icif (:,:) = hicif(:,:) + zhicifinc(:,:)853 htm_i (:,:) = htm_i (:,:) + zhicifinc(:,:) 855 854 phicif(:,:) = phicif(:,:) + zhicifinc(:,:) 856 855 ! … … 882 881 neuler = 0 ! Force Euler forward step 883 882 ! 884 ! Sea-ice : LIM-3 case (to add) 885 ! 886 #if defined key_lim2 887 ! Sea-ice : LIM-2 case. 888 zofrld(:,:)=frld(:,:) 889 zohicif(:,:)=hicif(:,:) 883 ! Sea-ice : LIM-3 case 884 ! 885 #if defined key_lim3 886 zofrld (:,:) = 1._wp - at_i(:,:) 887 zohicif(:,:) = htm_i(:,:) 890 888 ! 891 889 ! Initialize the now fields the background + increment 892 frld (:,:) = MIN( MAX( frld(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 893 pfrld(:,:) = frld(:,:) 894 fr_i (:,:) = 1.0_wp - frld(:,:) ! adjust ice fraction 895 zseaicendg(:,:) = zofrld(:,:) - frld(:,:) ! find out actual sea ice nudge applied 890 at_i(:,:) = 1. - MIN( MAX( 1.-at_i(:,:) - seaice_bkginc(:,:), 0.0_wp), 1.0_wp) 891 pfrld(:,:) = 1.-at_i(:,:) 892 fr_i(:,:) = at_i(:,:) ! adjust ice fraction 893 ! 894 zseaicendg(:,:) = zofrld(:,:) - (1. - at_i(:,:)) ! find out actual sea ice nudge applied 896 895 ! 897 896 ! Nudge sea ice depth to bring it up to a required minimum depth 898 WHERE( zseaicendg(:,:) > 0.0_wp .AND. h icif(:,:) < zhicifmin )899 zhicifinc(:,:) = (zhicifmin - h icif(:,:)) * zincwgt897 WHERE( zseaicendg(:,:) > 0.0_wp .AND. htm_i(:,:) < zhicifmin ) 898 zhicifinc(:,:) = (zhicifmin - htm_i(:,:)) * zincwgt 900 899 ELSEWHERE 901 zhicifinc(:,:) = 0. _wp900 zhicifinc(:,:) = 0.0_wp 902 901 END WHERE 903 902 ! 904 903 ! nudge ice depth 905 h icif (:,:) = hicif(:,:) + zhicifinc(:,:)904 htm_i (:,:) = htm_i (:,:) + zhicifinc(:,:) 906 905 phicif(:,:) = phicif(:,:) 907 906 ! … … 926 925 ENDIF 927 926 928 !#if defined defined key_lim 2|| defined key_cice927 !#if defined defined key_lim3 || defined key_cice 929 928 ! 930 929 ! IF (ln_seaicebal ) THEN -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdy_oce.F90
r7753 r8306 55 55 REAL(wp), POINTER, DIMENSION(:,:) :: tem 56 56 REAL(wp), POINTER, DIMENSION(:,:) :: sal 57 #if defined key_lim2 58 LOGICAL :: ll_frld 59 LOGICAL :: ll_hicif 60 LOGICAL :: ll_hsnif 61 REAL(wp), POINTER, DIMENSION(:) :: frld 62 REAL(wp), POINTER, DIMENSION(:) :: hicif 63 REAL(wp), POINTER, DIMENSION(:) :: hsnif 64 #elif defined key_lim3 57 #if defined key_lim3 65 58 LOGICAL :: ll_a_i 66 59 LOGICAL :: ll_ht_i -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdydta.F90
r7861 r8306 25 25 USE iom ! IOM library 26 26 USE in_out_manager ! I/O logical units 27 #if defined key_lim2 28 USE ice_2 29 #elif defined key_lim3 27 #if defined key_lim3 30 28 USE ice 31 29 USE limvar ! redistribute ice input into categories … … 50 48 51 49 #if defined key_lim3 52 LOGICAL :: ll_bdylim3 ! determine whether ice input is lim2 (F) or lim3(T) type50 LOGICAL :: ll_bdylim3 ! determine whether ice input is 1cat (F) or Xcat (T) type 53 51 INTEGER :: jfld_hti, jfld_hts, jfld_ai ! indices of ice thickness, snow thickness and concentration in bf structure 54 52 #endif … … 176 174 ENDIF 177 175 178 #if defined key_lim2 179 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 180 ilen1(:) = nblen(:) 181 IF( dta%ll_frld ) THEN 182 igrd = 1 183 DO ib = 1, ilen1(igrd) 184 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 185 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 186 dta_bdy(ib_bdy)%frld(ib) = frld(ii,ij) * tmask(ii,ij,1) 187 END DO 188 END IF 189 IF( dta%ll_hicif ) THEN 190 igrd = 1 191 DO ib = 1, ilen1(igrd) 192 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 193 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 194 dta_bdy(ib_bdy)%hicif(ib) = hicif(ii,ij) * tmask(ii,ij,1) 195 END DO 196 END IF 197 IF( dta%ll_hsnif ) THEN 198 igrd = 1 199 DO ib = 1, ilen1(igrd) 200 ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 201 ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 202 dta_bdy(ib_bdy)%hsnif(ib) = hsnif(ii,ij) * tmask(ii,ij,1) 203 END DO 204 END IF 205 ENDIF 206 #elif defined key_lim3 176 #if defined key_lim3 207 177 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 208 178 ilen1(:) = nblen(:) … … 373 343 ENDIF 374 344 #if defined key_lim3 375 IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is lim2 type)345 IF( .NOT. ll_bdylim3 .AND. cn_ice_lim(ib_bdy) /= 'none' .AND. nn_ice_lim_dta(ib_bdy) == 1 ) THEN ! bdy ice input (case input is 1cat) 376 346 CALL lim_var_itd ( bf(jfld_hti)%fnow(:,1,1), bf(jfld_hts)%fnow(:,1,1), bf(jfld_ai)%fnow(:,1,1), & 377 347 & dta_bdy(ib_bdy)%ht_i, dta_bdy(ib_bdy)%ht_s, dta_bdy(ib_bdy)%a_i ) … … 449 419 TYPE(FLD_N) :: bn_tem, bn_sal, bn_u3d, bn_v3d ! 450 420 TYPE(FLD_N) :: bn_ssh, bn_u2d, bn_v2d ! informations about the fields to be read 451 #if defined key_lim2 452 TYPE(FLD_N) :: bn_frld, bn_hicif, bn_hsnif ! 453 #elif defined key_lim3 421 #if defined key_lim3 454 422 TYPE(FLD_N) :: bn_a_i, bn_ht_i, bn_ht_s 455 #endif456 423 NAMELIST/nambdy_dta/ cn_dir, bn_tem, bn_sal, bn_u3d, bn_v3d, bn_ssh, bn_u2d, bn_v2d 457 #if defined key_lim2458 NAMELIST/nambdy_dta/ bn_frld, bn_hicif, bn_hsnif459 #elif defined key_lim3460 424 NAMELIST/nambdy_dta/ bn_a_i, bn_ht_i, bn_ht_s 461 425 #endif … … 475 439 ,nn_dyn3d_dta(ib_bdy) & 476 440 ,nn_tra_dta(ib_bdy) & 477 #if ( defined key_lim2 || defined key_lim3 )441 #if defined key_lim3 478 442 ,nn_ice_lim_dta(ib_bdy) & 479 443 #endif … … 496 460 nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 2 497 461 ENDIF 498 #if ( defined key_lim2 || defined key_lim3 )462 #if defined key_lim3 499 463 IF( cn_ice_lim(ib_bdy) /= 'none' .and. nn_ice_lim_dta(ib_bdy) == 1 ) THEN 500 464 nb_bdy_fld(ib_bdy) = nb_bdy_fld(ib_bdy) + 3 … … 637 601 ENDIF 638 602 639 #if defined key_lim 2603 #if defined key_lim3 640 604 ! sea ice 641 605 IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 642 643 IF( dta%ll_frld ) THEN 644 jfld = jfld + 1 645 blf_i(jfld) = bn_frld 646 ibdy(jfld) = ib_bdy 647 igrid(jfld) = 1 648 ilen1(jfld) = nblen(igrid(jfld)) 649 ilen3(jfld) = 1 650 ENDIF 651 652 IF( dta%ll_hicif ) THEN 653 jfld = jfld + 1 654 blf_i(jfld) = bn_hicif 655 ibdy(jfld) = ib_bdy 656 igrid(jfld) = 1 657 ilen1(jfld) = nblen(igrid(jfld)) 658 ilen3(jfld) = 1 659 ENDIF 660 661 IF( dta%ll_hsnif ) THEN 662 jfld = jfld + 1 663 blf_i(jfld) = bn_hsnif 664 ibdy(jfld) = ib_bdy 665 igrid(jfld) = 1 666 ilen1(jfld) = nblen(igrid(jfld)) 667 ilen3(jfld) = 1 668 ENDIF 669 670 ENDIF 671 #elif defined key_lim3 672 ! sea ice 673 IF( nn_ice_lim_dta(ib_bdy) == 1 ) THEN 674 ! Test for types of ice input (lim2 or lim3) 606 ! Test for types of ice input (1cat or Xcat) 675 607 ! Build file name to find dimensions 676 608 clname=TRIM( cn_dir )//TRIM(bn_a_i%clname) … … 689 621 690 622 IF ( zndims == 4 ) THEN 691 ll_bdylim3 = .TRUE. ! lim3input623 ll_bdylim3 = .TRUE. ! Xcat input 692 624 ELSE 693 ll_bdylim3 = .FALSE. ! lim2input625 ll_bdylim3 = .FALSE. ! 1cat input 694 626 ENDIF 695 627 ! End test … … 848 780 ENDIF 849 781 850 #if defined key_lim2 851 IF (cn_ice_lim(ib_bdy) /= 'none') THEN 852 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN 853 ALLOCATE( dta_bdy(ib_bdy)%frld(nblen(1)) ) 854 ALLOCATE( dta_bdy(ib_bdy)%hicif(nblen(1)) ) 855 ALLOCATE( dta_bdy(ib_bdy)%hsnif(nblen(1)) ) 856 ELSE 857 jfld = jfld + 1 858 dta_bdy(ib_bdy)%frld => bf(jfld)%fnow(:,1,1) 859 jfld = jfld + 1 860 dta_bdy(ib_bdy)%hicif => bf(jfld)%fnow(:,1,1) 861 jfld = jfld + 1 862 dta_bdy(ib_bdy)%hsnif => bf(jfld)%fnow(:,1,1) 863 ENDIF 864 ENDIF 865 #elif defined key_lim3 782 #if defined key_lim3 866 783 IF (cn_ice_lim(ib_bdy) /= 'none') THEN 867 784 IF( nn_ice_lim_dta(ib_bdy) == 0 ) THEN … … 870 787 ALLOCATE( dta_bdy(ib_bdy)%ht_s(nblen(1),jpl) ) 871 788 ELSE 872 IF ( ll_bdylim3 ) THEN ! case input is lim3 type789 IF ( ll_bdylim3 ) THEN ! case input is Xcat 873 790 jfld = jfld + 1 874 791 dta_bdy(ib_bdy)%a_i => bf(jfld)%fnow(:,1,:) … … 877 794 jfld = jfld + 1 878 795 dta_bdy(ib_bdy)%ht_s => bf(jfld)%fnow(:,1,:) 879 ELSE ! case input is lim2 type796 ELSE ! case input is 1cat 880 797 jfld_ai = jfld + 1 881 798 jfld_hti = jfld + 2 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyice_lim.F90
r7646 r8306 2 2 !!====================================================================== 3 3 !! *** MODULE bdyice_lim *** 4 !! Unstructured Open Boundary Cond. : Open boundary conditions for sea-ice (LIM 2 and LIM3)4 !! Unstructured Open Boundary Cond. : Open boundary conditions for sea-ice (LIM3) 5 5 !!====================================================================== 6 6 !! History : 3.3 ! 2010-09 (D. Storkey) Original code … … 8 8 !! - ! 2012-01 (C. Rousset) add lim3 and remove useless jk loop 9 9 !!---------------------------------------------------------------------- 10 #if defined key_lim2 || defined key_lim3 11 !!---------------------------------------------------------------------- 12 !! 'key_lim2' LIM-2 sea ice model 10 #if defined key_lim3 11 !!---------------------------------------------------------------------- 13 12 !! 'key_lim3' LIM-3 sea ice model 14 13 !!---------------------------------------------------------------------- … … 20 19 USE eosbn2 ! equation of state 21 20 USE oce ! ocean dynamics and tracers variables 22 #if defined key_lim2 23 USE par_ice_2 24 USE ice_2 ! LIM_2 ice variables 25 USE dom_ice_2 ! sea-ice domain 26 #elif defined key_lim3 21 #if defined key_lim3 27 22 USE ice ! LIM_3 ice variables 28 23 USE limvar … … 55 50 !! *** SUBROUTINE bdy_ice_lim *** 56 51 !! 57 !! ** Purpose : - Apply open boundary conditions for ice (LIM 2 and LIM3)52 !! ** Purpose : - Apply open boundary conditions for ice (LIM3) 58 53 !! 59 54 !!---------------------------------------------------------------------- … … 110 105 REAL(wp) :: zwgt, zwgt1 ! local scalar 111 106 REAL(wp) :: ztmelts, zdh 112 #if defined key_lim2 && ! defined key_lim2_vp && defined key_agrif113 USE ice_2, vt_s => hsnm114 USE ice_2, vt_i => hicm115 #endif116 107 !!------------------------------------------------------------------------------ 117 108 ! … … 120 111 jgrd = 1 ! Everything is at T-points here 121 112 ! 122 #if defined key_lim2 123 DO jb = 1, idx%nblenrim(jgrd) 124 ji = idx%nbi(jb,jgrd) 125 jj = idx%nbj(jb,jgrd) 126 zwgt = idx%nbw(jb,jgrd) 127 zwgt1 = 1.e0 - idx%nbw(jb,jgrd) 128 frld (ji,jj) = ( frld (ji,jj) * zwgt1 + dta%frld (jb) * zwgt ) * tmask(ji,jj,1) ! Leads fraction 129 hicif(ji,jj) = ( hicif(ji,jj) * zwgt1 + dta%hicif(jb) * zwgt ) * tmask(ji,jj,1) ! Ice depth 130 hsnif(ji,jj) = ( hsnif(ji,jj) * zwgt1 + dta%hsnif(jb) * zwgt ) * tmask(ji,jj,1) ! Snow depth 131 END DO 132 133 CALL lbc_bdy_lnk( frld, 'T', 1., ib_bdy ) ! lateral boundary conditions 134 CALL lbc_bdy_lnk( hicif, 'T', 1., ib_bdy ) 135 CALL lbc_bdy_lnk( hsnif, 'T', 1., ib_bdy ) 136 137 vt_i(:,:) = hicif(:,:) * frld(:,:) 138 vt_s(:,:) = hsnif(:,:) * frld(:,:) 139 ! 140 #elif defined key_lim3 113 #if defined key_lim3 141 114 142 115 DO jl = 1, jpl -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/BDY/bdyini.F90
r7646 r8306 351 351 IF(lwp) WRITE(numout,*) 352 352 353 #if defined key_lim2 354 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 355 SELECT CASE( cn_ice_lim(ib_bdy) ) 356 CASE('none') 357 IF(lwp) WRITE(numout,*) ' no open boundary condition' 358 dta_bdy(ib_bdy)%ll_frld = .false. 359 dta_bdy(ib_bdy)%ll_hicif = .false. 360 dta_bdy(ib_bdy)%ll_hsnif = .false. 361 CASE('frs') 362 IF(lwp) WRITE(numout,*) ' Flow Relaxation Scheme' 363 dta_bdy(ib_bdy)%ll_frld = .true. 364 dta_bdy(ib_bdy)%ll_hicif = .true. 365 dta_bdy(ib_bdy)%ll_hsnif = .true. 366 CASE DEFAULT ; CALL ctl_stop( 'unrecognised value for cn_ice_lim' ) 367 END SELECT 368 IF( cn_ice_lim(ib_bdy) /= 'none' ) THEN 369 SELECT CASE( nn_ice_lim_dta(ib_bdy) ) ! 370 CASE( 0 ) ; IF(lwp) WRITE(numout,*) ' initial state used for bdy data' 371 CASE( 1 ) ; IF(lwp) WRITE(numout,*) ' boundary data taken from file' 372 CASE DEFAULT ; CALL ctl_stop( 'nn_ice_lim_dta must be 0 or 1' ) 373 END SELECT 374 ENDIF 375 IF(lwp) WRITE(numout,*) 376 #elif defined key_lim3 353 #if defined key_lim3 377 354 IF(lwp) WRITE(numout,*) 'Boundary conditions for sea ice: ' 378 355 SELECT CASE( cn_ice_lim(ib_bdy) ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DIA/dia25h.F90
r7753 r8306 148 148 rmxln_25h(:,:,:) = mxln(:,:,:) 149 149 #endif 150 #if defined key_lim3 || defined key_lim2150 #if defined key_lim3 151 151 CALL ctl_stop('STOP', 'dia_25h not setup yet to do tidemean ice') 152 152 #endif … … 207 207 ENDIF 208 208 209 #if defined key_lim3 || defined key_lim2209 #if defined key_lim3 210 210 CALL ctl_stop('STOP', 'dia_wri_tide not setup yet to do tidemean ice') 211 211 #endif -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DIA/diadct.F90
r8126 r8306 32 32 USE dianam ! build name of file 33 33 USE lib_mpp ! distributed memory computing library 34 #if defined key_lim235 USE ice_236 #endif37 34 #if defined key_lim3 38 35 USE ice … … 747 744 END DO !end of loop on the level 748 745 749 #if defined key_lim 2 || defined key_lim3746 #if defined key_lim3 750 747 751 748 !ICE CASE … … 769 766 zTnorm=zumid_ice*e2u(k%I,k%J)+zvmid_ice*e1v(k%I,k%J) 770 767 771 #if defined key_lim2772 transports_2d(1,jsec,jseg) = transports_2d(1,jsec,jseg) + (zTnorm)* &773 (1.0 - frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J)) &774 *(hsnif(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J) + &775 hicif(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J))776 transports_2d(2,jsec,jseg) = transports_2d(2,jsec,jseg) + (zTnorm)* &777 (1.0 - frld(sec%listPoint(jseg)%I,sec%listPoint(jseg)%J))778 #endif779 768 #if defined key_lim3 780 769 DO jl=1,jpl … … 960 949 ENDDO ! loop over jk 961 950 962 #if defined key_lim 2 || defined key_lim3951 #if defined key_lim3 963 952 964 953 !ICE CASE -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DIA/diawri.F90
r8226 r8306 51 51 USE ioipsl 52 52 53 #if defined key_lim2 54 USE limwri_2 55 #elif defined key_lim3 53 #if defined key_lim3 56 54 USE limwri 57 55 #endif … … 707 705 #endif 708 706 709 IF( ln_cpl .AND. nn_ice == 2 ) THEN710 CALL histdef( nid_T,"soicetem" , "Ice Surface Temperature" , "K" , & ! tn_ice711 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )712 CALL histdef( nid_T,"soicealb" , "Ice Albedo" , "[0,1]" , & ! alb_ice713 & jpi, jpj, nh_T, 1 , 1, 1 , -99 , 32, clop, zsto, zout )714 ENDIF715 716 707 CALL histend( nid_T, snc4chunks=snc4set ) 717 708 … … 861 852 #endif 862 853 863 IF( ln_cpl .AND. nn_ice == 2 ) THEN864 CALL histwrite( nid_T, "soicetem", it, tn_ice(:,:,1) , ndim_hT, ndex_hT ) ! surf. ice temperature865 CALL histwrite( nid_T, "soicealb", it, alb_ice(:,:,1), ndim_hT, ndex_hT ) ! ice albedo866 ENDIF867 868 854 CALL histwrite( nid_U, "vozocrtx", it, un , ndim_U , ndex_U ) ! i-current 869 855 CALL histwrite( nid_U, "sozotaux", it, utau , ndim_hU, ndex_hU ) ! i-wind stress … … 1009 995 ENDIF 1010 996 1011 #if defined key_lim2 1012 CALL lim_wri_state_2( kt, id_i, nh_i ) 1013 #elif defined key_lim3 997 #if defined key_lim3 1014 998 IF( nn_ice == 3 ) THEN ! clem2017: condition in case agrif + lim but no-ice in child grid 1015 999 CALL lim_wri_state( kt, id_i, nh_i ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ICB/icb_oce.F90
r6140 r8306 90 90 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: ua_e, va_e 91 91 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: ssh_e 92 #if defined key_lim 2 || defined key_lim3 || defined key_cice92 #if defined key_lim3 || defined key_cice 93 93 REAL(wp), PUBLIC, DIMENSION(:,:), ALLOCATABLE :: ui_e, vi_e 94 94 #endif … … 170 170 ALLOCATE( uo_e(0:jpi+1,0:jpj+1) , ua_e(0:jpi+1,0:jpj+1) , & 171 171 & vo_e(0:jpi+1,0:jpj+1) , va_e(0:jpi+1,0:jpj+1) , & 172 #if defined key_lim 2 || defined key_lim3 || defined key_cice172 #if defined key_lim3 || defined key_cice 173 173 & ui_e(0:jpi+1,0:jpj+1) , & 174 174 & vi_e(0:jpi+1,0:jpj+1) , & -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/ICB/icbutl.F90
r7646 r8306 21 21 USE icb_oce ! define iceberg arrays 22 22 USE sbc_oce ! ocean surface boundary conditions 23 #if defined key_lim2 24 USE ice_2, ONLY: u_ice, v_ice ! LIM-2 ice velocities (CAUTION in C-grid do not use key_vp option) 25 USE ice_2, ONLY: hicif ! LIM-2 ice thickness 26 #elif defined key_lim3 27 USE ice, ONLY: u_ice, v_ice ! LIM-3 variables (always in C-grid) 28 ! gm LIM3 case the mean ice thickness (i.e. averaged over categories) 29 ! gm has to be computed somewhere in the ice and accessed here 23 #if defined key_lim3 24 USE ice, ONLY: u_ice, v_ice, htm_i ! LIM-3 variables 30 25 #endif 31 26 … … 85 80 CALL lbc_lnk_icb( fr_e, 'T', +1._wp, 1, 1 ) 86 81 CALL lbc_lnk_icb( tt_e, 'T', +1._wp, 1, 1 ) 87 #if defined key_lim2 88 hicth(:,:) = 0._wp ; hicth(1:jpi,1:jpj) = hicif(:,:) 89 CALL lbc_lnk_icb(hicth, 'T', +1._wp, 1, 1 ) 90 #endif 91 92 #if defined key_lim2 || defined key_lim3 82 #if defined key_lim3 83 hicth(:,:) = 0._wp ; hicth(1:jpi,1:jpj) = htm_i(:,:) 93 84 ui_e(:,:) = 0._wp ; ui_e(1:jpi, 1:jpj) = u_ice(:,:) 94 85 vi_e(:,:) = 0._wp ; vi_e(1:jpi, 1:jpj) = v_ice(:,:) 95 86 CALL lbc_lnk_icb(hicth, 'T', +1._wp, 1, 1 ) 96 87 CALL lbc_lnk_icb( ui_e, 'U', -1._wp, 1, 1 ) 97 88 CALL lbc_lnk_icb( vi_e, 'V', -1._wp, 1, 1 ) … … 157 148 pva = pva * zmod 158 149 159 #if defined key_lim 2 || defined key_lim3150 #if defined key_lim3 160 151 pui = icb_utl_bilin_h( ui_e, pi, pj, 'U' ) ! sea-ice velocities 161 152 pvi = icb_utl_bilin_h( vi_e, pi, pj, 'V' ) 162 # if defined key_lim3163 phi = 0._wp ! LIM-3 case (to do)164 # else165 153 phi = icb_utl_bilin_h(hicth, pi, pj, 'T' ) ! ice thickness 166 # endif167 154 #else 168 155 pui = 0._wp -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/IOM/iom.F90
r8239 r8306 34 34 #if defined key_lim3 35 35 USE ice , ONLY : jpl 36 #elif defined key_lim237 USE par_ice_238 36 #endif 39 37 USE domngb ! ocean space and time domain … … 193 191 CALL iom_set_axis_attr( "nfloat", (/ (REAL(ji,wp), ji=1,nfloat) /) ) 194 192 # endif 195 #if defined key_lim3 || defined key_lim2193 #if defined key_lim3 196 194 CALL iom_set_axis_attr( "ncatice", (/ (REAL(ji,wp), ji=1,jpl) /) ) 197 195 ! SIMIP diagnostics (4 main arctic straits) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/OBS/diaobs.F90
r6140 r8306 291 291 END DO 292 292 ENDIF 293 #if defined key_lim 2 || defined key_lim3293 #if defined key_lim3 294 294 IF (ln_sic) THEN 295 295 jtype = jtype + 1 … … 541 541 & frld 542 542 #endif 543 #if defined key_lim2544 USE ice_2, ONLY : & ! LIM2 Ice model variables545 & frld546 #endif547 543 IMPLICIT NONE 548 544 … … 567 563 & zgphi1, & ! Model latitudes for prof variable 1 568 564 & zgphi2 ! Model latitudes for prof variable 2 569 #if ! defined key_lim 2 && ! defined key_lim3565 #if ! defined key_lim3 570 566 REAL(wp), POINTER, DIMENSION(:,:) :: frld 571 567 #endif … … 582 578 CALL wrk_alloc( jpi, jpj, zgphi1 ) 583 579 CALL wrk_alloc( jpi, jpj, zgphi2 ) 584 #if ! defined key_lim 2 && ! defined key_lim3580 #if ! defined key_lim3 585 581 CALL wrk_alloc(jpi,jpj,frld) 586 582 #endif … … 597 593 ! No LIM => frld == 0.0_wp 598 594 !----------------------------------------------------------------------- 599 #if ! defined key_lim 2 && ! defined key_lim3595 #if ! defined key_lim3 600 596 frld(:,:) = 0.0_wp 601 597 #endif … … 665 661 zsurfvar(:,:) = sshn(:,:) 666 662 llnightav = .FALSE. 667 #if defined key_lim 2 || defined key_lim3663 #if defined key_lim3 668 664 CASE('sic') 669 665 IF ( kstp == 0 ) THEN … … 702 698 CALL wrk_dealloc( jpi, jpj, zgphi1 ) 703 699 CALL wrk_dealloc( jpi, jpj, zgphi2 ) 704 #if ! defined key_lim 2 && ! defined key_lim3700 #if ! defined key_lim3 705 701 CALL wrk_dealloc(jpi,jpj,frld) 706 702 #endif -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r8237 r8306 9 9 !! 3.4 ! 2011-11 (C. Harris) CICE added as an option 10 10 !!---------------------------------------------------------------------- 11 #if defined key_lim3 || defined key_ lim2 || defined key_cice11 #if defined key_lim3 || defined key_cice 12 12 !!---------------------------------------------------------------------- 13 !! 'key_lim 2' or 'key_lim3' : LIM-2 orLIM-3 sea-ice model13 !! 'key_lim3' : LIM-3 sea-ice model 14 14 !!---------------------------------------------------------------------- 15 15 USE par_oce ! ocean parameters … … 17 17 # if defined key_lim3 18 18 USE ice ! LIM-3 parameters 19 # endif20 # if defined key_lim221 USE par_ice_2 ! LIM-2 parameters22 USE ice_223 19 # endif 24 20 # if defined key_cice … … 33 29 PUBLIC sbc_ice_alloc ! called in iceini(_2).F90 34 30 35 # if defined key_lim236 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .TRUE. !: LIM-2 ice model37 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-338 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE39 # if defined key_lim2_vp40 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'I' !: VP : 'I'-grid ice-velocity (B-grid lower left corner)41 # else42 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'C' !: EVP: 'C'-grid ice-velocity43 # endif44 # endif45 31 # if defined key_lim3 46 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-247 32 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .TRUE. !: LIM-3 ice model 48 33 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE … … 50 35 # endif 51 36 # if defined key_cice 52 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-253 37 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 54 38 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .TRUE. !: CICE ice model … … 84 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_oce !: evap - precip over ocean [kg/m2/s] 85 69 #endif 86 #if defined key_lim3 || defined key_lim270 #if defined key_lim3 87 71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndm_ice !: wind speed module at T-point [m/s] 88 72 #endif … … 108 92 #endif 109 93 110 #if defined key_ lim2 || defined key_cice94 #if defined key_cice 111 95 ! already defined in ice.F90 for LIM3 112 96 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i … … 135 119 ierr(:) = 0 136 120 137 #if defined key_lim3 || defined key_lim2121 #if defined key_lim3 138 122 ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) , & 139 123 & qla_ice (jpi,jpj,jpl) , dqla_ice(jpi,jpj,jpl) , & … … 141 125 & utau_ice(jpi,jpj) , vtau_ice(jpi,jpj) , wndm_ice(jpi,jpj) , & 142 126 & fr1_i0 (jpi,jpj) , fr2_i0 (jpi,jpj) , & 143 #if defined key_lim2144 & a_i(jpi,jpj,jpl) , &145 #endif146 #if defined key_lim3147 127 & evap_ice(jpi,jpj,jpl) , devap_ice(jpi,jpj,jpl) , qprec_ice(jpi,jpj) , & 148 128 & qemp_ice(jpi,jpj) , qevap_ice(jpi,jpj,jpl) , qemp_oce (jpi,jpj) , & 149 129 & qns_oce (jpi,jpj) , qsr_oce (jpi,jpj) , emp_oce (jpi,jpj) , & 150 #endif151 130 & emp_ice(jpi,jpj) , STAT= ierr(1) ) 152 131 #endif … … 166 145 #endif 167 146 ! 168 #if defined key_cice || defined key_lim2147 #if defined key_cice 169 148 IF( ln_cpl ) ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(5) ) 170 149 #endif … … 183 162 PUBLIC sbc_ice_alloc 184 163 185 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 ice model186 164 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 ice model 187 165 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE ice model -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk.F90
r7753 r8306 42 42 USE ice , ONLY : u_ice, v_ice, jpl, pfrld, a_i_b, at_i_b 43 43 USE limthd_dh ! for CALL lim_thd_snwblow 44 #elif defined key_lim245 USE ice_2 , ONLY : u_ice, v_ice46 USE par_ice_2 ! LIM-2 parameters47 44 #endif 48 45 USE sbcblk_algo_ncar ! => turb_ncar : NCAR - CORE (Large & Yeager, 2009) … … 64 61 PUBLIC sbc_blk_init ! called in sbcmod 65 62 PUBLIC sbc_blk ! called in sbcmod 66 #if defined key_lim 2 || defined key_lim363 #if defined key_lim3 67 64 PUBLIC blk_ice_tau ! routine called in sbc_ice_lim module 68 65 PUBLIC blk_ice_flx ! routine called in sbc_ice_lim module … … 573 570 END SUBROUTINE blk_oce 574 571 575 #if defined key_lim 2 || defined key_lim3572 #if defined key_lim3 576 573 577 574 SUBROUTINE blk_ice_tau … … 602 599 603 600 ! Make ice-atm. drag dependent on ice concentration (see Lupkes et al. 2012) (clem) 604 #if defined key_lim3605 601 IF( ln_Cd_L12 ) THEN 606 602 CALL Cdn10_Lupkes2012( Cd ) ! calculate new drag from Lupkes(2012) equations 607 603 ENDIF 608 #endif609 604 610 605 ! local scalars ( place there for vector optimisation purposes) … … 717 712 718 713 ! Make ice-atm. drag dependent on ice concentration (see Lupkes et al. 2012) (clem) 719 #if defined key_lim3720 714 IF( ln_Cd_L12 ) THEN 721 715 CALL Cdn10_Lupkes2012( Cd ) ! calculate new drag from Lupkes(2012) equations 722 716 ENDIF 723 #endif724 717 725 718 ! … … 786 779 CALL iom_put( 'precip' , tprecip * 86400. ) ! Total precipitation 787 780 788 #if defined key_lim3789 781 CALL wrk_alloc( jpi,jpj, zevap, zsnw ) 790 782 … … 824 816 825 817 CALL wrk_dealloc( jpi,jpj, zevap, zsnw ) 826 #endif827 818 828 819 !-------------------------------------------------------------------- -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbccpl.F90
r7968 r8306 28 28 #if defined key_lim3 29 29 USE ice ! ice variables 30 #endif31 #if defined key_lim232 USE par_ice_2 ! ice parameters33 USE ice_2 ! ice variables34 30 #endif 35 31 USE cpl_oasis3 ! OASIS3 coupling … … 207 203 ALLOCATE( albedo_oce_mix(jpi,jpj), nrcvinfo(jprcv), STAT=ierr(1) ) 208 204 209 #if ! defined key_lim3 && ! defined key_ lim2 && ! defined key_cice205 #if ! defined key_lim3 && ! defined key_cice 210 206 ALLOCATE( a_i(jpi,jpj,1) , STAT=ierr(2) ) ! used in sbcice_if.F90 (done here as there is no sbc_ice_if_init) 211 207 #endif … … 1950 1946 1951 1947 ! Surface transimission parameter io (Maykut Untersteiner , 1971 ; Ebert and Curry, 1993 ) 1952 ! Used for LIM 2 and LIM31948 ! Used for LIM3 1953 1949 ! Coupled case: since cloud cover is not received from atmosphere 1954 1950 ! ===> used prescribed cloud fraction representative for polar oceans in summer (0.81) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r6140 r8306 94 94 ! and in case of no melt, it can generate HSSW. 95 95 ! 96 #if ! defined key_lim 2 && ! defined key_lim3 && ! defined key_cice96 #if ! defined key_lim3 && ! defined key_cice 97 97 snwice_mass_b(:,:) = 0.e0 ! no sea-ice model is being used : no snow+ice mass 98 98 snwice_mass (:,:) = 0.e0 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r8226 r8306 34 34 USE sbcice_if ! surface boundary condition: ice-if sea-ice model 35 35 USE sbcice_lim ! surface boundary condition: LIM 3.0 sea-ice model 36 USE sbcice_lim_2 ! surface boundary condition: LIM 2.0 sea-ice model37 36 USE sbcice_cice ! surface boundary condition: CICE sea-ice model 38 37 USE sbcisf ! surface boundary condition: ice-shelf … … 117 116 #if defined key_agrif 118 117 IF( Agrif_Root() ) THEN ! AGRIF zoom (cf r1242: possibility to run without ice in fine grid) 119 IF( lk_lim2 ) nn_ice = 2120 118 IF( lk_lim3 ) nn_ice = 3 121 119 IF( lk_cice ) nn_ice = 4 122 120 ENDIF 123 121 #else 124 IF( lk_lim2 ) nn_ice = 2125 122 IF( lk_lim3 ) nn_ice = 3 126 123 IF( lk_cice ) nn_ice = 4 … … 201 198 CASE( 0 ) !- no ice in the domain 202 199 CASE( 1 ) !- Ice-cover climatology ("Ice-if" model) 203 CASE( 2 ) !- LIM2 ice model204 IF( .NOT.( ln_blk .OR. ln_cpl ) ) CALL ctl_stop( 'sbc_init : LIM2 sea-ice model requires ln_blk or ln_cpl = T' )205 200 CASE( 3 ) !- LIM3 ice model 206 201 IF( nn_ice_embd == 0 ) CALL ctl_stop( 'sbc_init : LIM3 sea-ice models require nn_ice_embd = 1 or 2' ) … … 428 423 SELECT CASE( nn_ice ) ! Update heat and freshwater fluxes over sea-ice areas 429 424 CASE( 1 ) ; CALL sbc_ice_if ( kt ) ! Ice-cover climatology ("Ice-if" model) 430 CASE( 2 ) ; CALL sbc_ice_lim_2( kt, nsbc ) ! LIM-2 ice model431 425 CASE( 3 ) ; CALL sbc_ice_lim ( kt, nsbc ) ! LIM-3 ice model 432 426 CASE( 4 ) ; CALL sbc_ice_cice ( kt, nsbc ) ! CICE ice model -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r8226 r8306 140 140 CALL Agrif_Declare_Var_top ! " " " " " TOP 141 141 # endif 142 # if defined key_lim2143 CALL Agrif_Declare_Var_lim2 ! " " " " " LIM2144 # endif145 142 # if defined key_lim3 146 143 CALL Agrif_Declare_Var_lim3 ! " " " " " LIM3 … … 206 203 ! 207 204 #if defined key_agrif 208 !!clem2017IF( .NOT. Agrif_Root() ) THEN205 IF( .NOT. Agrif_Root() ) THEN 209 206 CALL Agrif_ParentGrid_To_ChildGrid() 210 207 IF( ln_diaobs ) CALL dia_obs_wri 211 208 IF( nn_timing == 1 ) CALL timing_finalize 212 209 CALL Agrif_ChildGrid_To_ParentGrid() 213 !!clem2017ENDIF210 ENDIF 214 211 #endif 215 212 IF( nn_timing == 1 ) CALL timing_finalize -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/SAS_SRC/diawri.F90
r8226 r8306 38 38 USE iom 39 39 USE ioipsl 40 #if defined key_lim2 41 USE limwri_2 42 #elif defined key_lim3 40 #if defined key_lim3 43 41 USE limwri 44 42 #endif … … 397 395 & jpi, jpj, nh_i, 1 , 1, 1 , -99 , 32, clop, zsto, zout ) 398 396 399 #if defined key_lim2 400 CALL lim_wri_state_2( kt, id_i, nh_i ) 401 #elif defined key_lim3 397 #if defined key_lim3 402 398 IF( nn_ice == 3 ) THEN ! clem2017: condition in case agrif + lim but no-ice in child grid 403 399 CALL lim_wri_state( kt, id_i, nh_i ) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/SAS_SRC/nemogcm.F90
r8226 r8306 85 85 # if defined key_top 86 86 CALL Agrif_Declare_Var_top ! " " " " " TOP 87 # endif88 # if defined key_lim289 CALL Agrif_Declare_Var_lim2 ! " " " " " LIM90 87 # endif 91 88 # if defined key_lim3 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/TOOLS/DOMAINcfg/namelist_ref
r7200 r8306 278 278 ! = 2 Redistribute a single flux over categories (coupled mode only) 279 279 ! Sea-ice : 280 nn_ice = 2! =0 no ice boundary condition ,280 nn_ice = 3 ! =0 no ice boundary condition , 281 281 ! =1 use observed ice-cover , 282 ! = 2 ice-model used ("key_lim3", "key_lim2", "key_cice")282 ! =3-4 ice-model used ("key_lim3", "key_cice") 283 283 nn_ice_embd = 1 ! =0 levitating ice (no mass exchange, concentration/dilution effect) 284 284 ! =1 levitating ice with mass and salt exchange but no presure effect … … 670 670 bn_tem = 'amm12_bdyT_tra', 24 , 'votemper', .true. , .false. , 'daily' , '' , '' , '' 671 671 bn_sal = 'amm12_bdyT_tra', 24 , 'vosaline', .true. , .false. , 'daily' , '' , '' , '' 672 ! for lim2673 ! bn_frld = 'amm12_bdyT_ice', 24 , 'ileadfra', .true. , .false. , 'daily' , '' , '' , ''674 ! bn_hicif = 'amm12_bdyT_ice', 24 , 'iicethic', .true. , .false. , 'daily' , '' , '' , ''675 ! bn_hsnif = 'amm12_bdyT_ice', 24 , 'isnowthi', .true. , .false. , 'daily' , '' , '' , ''676 672 ! for lim3 677 673 ! bn_a_i = 'amm12_bdyT_ice', 24 , 'ileadfra', .true. , .false. , 'daily' , '' , '' , ''
Note: See TracChangeset
for help on using the changeset viewer.