Changeset 8324 for branches/2017/dev_r8183_ICEMODEL
- Timestamp:
- 2017-07-12T15:36:28+02:00 (7 years ago)
- Location:
- branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO
- Files:
-
- 10 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/icestp.F90
r8322 r8324 302 302 CALL ice_run_init ! set some ice run parameters 303 303 ! 304 ! ! Allocate the ice arrays 304 ! ! Allocate the ice arrays (sbc_ice already allocated in sbc_init) 305 305 ierr = ice_alloc () ! ice variables 306 ierr = ierr + sbc_ice_alloc () ! surface forcing307 306 ierr = ierr + thd_ice_alloc () ! thermodynamics 308 307 IF( ln_limdyn ) ierr = ierr + lim_itd_me_alloc () ! ice thickness distribution - mechanics -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limrhg.F90
r8319 r8324 19 19 !!---------------------------------------------------------------------- 20 20 USE phycst ! Physical constant 21 USE oce , ONLY : snwice_mass, snwice_mass_b22 21 USE par_oce ! Ocean parameters 23 22 USE dom_oce ! Ocean domain 24 23 USE sbc_oce , ONLY : ln_ice_embd, nn_fsbc, ssh_m 25 USE sbc_ice , ONLY : utau_ice, vtau_ice 24 USE sbc_ice , ONLY : utau_ice, vtau_ice, snwice_mass, snwice_mass_b 26 25 USE ice ! ice variables 27 26 USE limitd_me ! ice strength -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limrst.F90
r8321 r8324 17 17 !!---------------------------------------------------------------------- 18 18 USE ice ! sea-ice variables 19 USE oce, ONLY : snwice_mass, snwice_mass_b19 USE sbc_ice , ONLY : snwice_mass, snwice_mass_b 20 20 USE dom_oce ! ocean domain 21 21 USE sbc_oce , ONLY : nn_fsbc -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/LIM_SRC_3/limsbc.F90
r8321 r8324 24 24 !!---------------------------------------------------------------------- 25 25 USE par_oce ! ocean parameters 26 USE oce , ONLY : sshn, sshb , snwice_mass, snwice_mass_b, snwice_fmass26 USE oce , ONLY : sshn, sshb 27 27 USE phycst ! physical constants 28 28 USE dom_oce ! ocean domain 29 29 USE ice ! LIM sea-ice variables 30 USE sbc_ice , ONLY : emp_oce, qns_oce, qsr_oce, qemp_oce, emp_ice, qsr_ice, qemp_ice, qevap_ice, alb_ice, tn_ice, cldf_ice 30 USE sbc_ice , ONLY : emp_oce, qns_oce, qsr_oce, qemp_oce, emp_ice, qsr_ice, qemp_ice, qevap_ice, alb_ice, tn_ice, cldf_ice, & 31 & snwice_mass, snwice_mass_b, snwice_fmass 31 32 USE sbc_oce , ONLY : nn_fsbc, ln_ice_embd, sfx, fr_i, qsr_tot, qns, qsr, fmmflx, emp, taum, utau, vtau 32 33 USE sbccpl ! Surface boundary condition: coupled interface -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r8313 r8324 17 17 USE phycst ! physical constants 18 18 USE sbc_oce ! surface boundary condition: ocean 19 USE sbc_ice , ONLY : snwice_mass, snwice_mass_b 19 20 USE sbcapr ! surface boundary condition: atmospheric pressure 20 21 USE dynspg_exp ! surface pressure gradient (dyn_spg_exp routine) -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r8321 r8324 27 27 PRIVATE 28 28 29 PUBLIC sbc_ice_alloc ! called in iceini(_2).F9029 PUBLIC sbc_ice_alloc ! called in sbcmod.F90 30 30 31 31 # if defined key_lim3 … … 103 103 REAL(wp), PUBLIC, SAVE :: cldf_ice = 0.81 !: cloud fraction over sea ice, summer CLIO value [-] 104 104 105 !! arrays relating to embedding ice in the ocean 106 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_mass !: mass of snow and ice at current ice time step [Kg/m2] 107 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_mass_b !: mass of snow and ice at previous ice time step [Kg/m2] 108 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_fmass !: time evolution of mass of snow+ice [Kg/m2/s] 109 105 110 !!---------------------------------------------------------------------- 106 111 !! NEMO/OPA 4.0 , NEMO Consortium (2011) … … 114 119 !! *** FUNCTION sbc_ice_alloc *** 115 120 !!---------------------------------------------------------------------- 116 INTEGER :: ierr( 5)121 INTEGER :: ierr(4) 117 122 !!---------------------------------------------------------------------- 118 123 ierr(:) = 0 124 125 ALLOCATE( snwice_mass(jpi,jpj) , snwice_mass_b(jpi,jpj), snwice_fmass(jpi,jpj) , STAT=ierr(1) ) 119 126 120 127 #if defined key_lim3 … … 127 134 & qemp_ice(jpi,jpj) , qevap_ice(jpi,jpj,jpl) , qemp_oce (jpi,jpj) , & 128 135 & qns_oce (jpi,jpj) , qsr_oce (jpi,jpj) , emp_oce (jpi,jpj) , & 129 & emp_ice(jpi,jpj) , STAT= ierr( 1) )136 & emp_ice(jpi,jpj) , STAT= ierr(2) ) 130 137 #endif 131 138 … … 136 143 ss_iov(jpi,jpj) , fr_iu(jpi,jpj) , fr_iv(jpi,jpj) , & 137 144 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat) , & 138 STAT= ierr( 1) )145 STAT= ierr(2) ) 139 146 IF( ln_cpl ) ALLOCATE( u_ice(jpi,jpj) , fr1_i0(jpi,jpj) , tn_ice (jpi,jpj,1) , & 140 147 & v_ice(jpi,jpj) , fr2_i0(jpi,jpj) , alb_ice(jpi,jpj,1) , & 141 148 & emp_ice(jpi,jpj) , qns_ice(jpi,jpj,1) , dqns_ice(jpi,jpj,1) , & 142 & STAT= ierr(2) ) 143 144 #endif 145 ! 146 #if defined key_cice 147 IF( ln_cpl ) ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(5) ) 149 & STAT= ierr(3) ) 150 IF( ln_cpl ) ALLOCATE( ht_i(jpi,jpj,jpl) , ht_s(jpi,jpj,jpl) , STAT=ierr(4) ) 148 151 #endif 149 152 … … 155 158 #else 156 159 !!---------------------------------------------------------------------- 157 !! Default option NO LIM 2.0 or 3.0or CICE sea-ice model160 !! Default option NO LIM3 or CICE sea-ice model 158 161 !!---------------------------------------------------------------------- 159 162 USE in_out_manager ! I/O manager … … 173 176 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ht_i, ht_s 174 177 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: topmelt, botmelt 178 ! 179 !! arrays relating to embedding ice in the ocean. These arrays need to be declared 180 !! even if no ice model is required. In the no ice model or traditional levitating 181 !! ice cases they contain only zeros 182 !! --------------------- 183 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_mass !: mass of snow and ice at current ice time step [Kg/m2] 184 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_mass_b !: mass of snow and ice at previous ice time step [Kg/m2] 185 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_fmass !: time evolution of mass of snow+ice [Kg/m2/s] 175 186 176 187 CONTAINS 177 188 INTEGER FUNCTION sbc_ice_alloc() 178 sbc_ice_alloc = 0 189 !!---------------------------------------------------------------------- 190 !! *** FUNCTION sbc_ice_alloc *** 191 !!---------------------------------------------------------------------- 192 INTEGER :: ierr(1) 193 !!---------------------------------------------------------------------- 194 ierr(:) = 0 195 ALLOCATE( snwice_mass(jpi,jpj) , snwice_mass_b(jpi,jpj), snwice_fmass(jpi,jpj) , STAT=ierr(1) ) 196 sbc_ice_alloc = MAXVAL( ierr ) 197 IF( lk_mpp ) CALL mpp_sum ( sbc_ice_alloc ) 198 IF( sbc_ice_alloc > 0 ) CALL ctl_warn('sbc_ice_alloc: allocation of arrays failed') 179 199 END FUNCTION sbc_ice_alloc 180 200 #endif -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcfwb.F90
r8306 r8324 17 17 USE dom_oce ! ocean space and time domain 18 18 USE sbc_oce ! surface ocean boundary condition 19 USE sbc_ice , ONLY : snwice_mass, snwice_mass_b, snwice_fmass 19 20 USE phycst ! physical constants 20 21 USE sbcrnf ! ocean runoffs -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcice_cice.F90
r8316 r8324 199 199 200 200 ! allocate sbc_ice and sbc_cice arrays 201 IF( sbc_ice_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_ice_cice_alloc : unable to allocate arrays' )202 201 IF( sbc_ice_cice_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_ice_cice_alloc : unable to allocate cice arrays' ) 203 202 -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r8321 r8324 210 210 ! !* allocate sbc arrays 211 211 IF( sbc_oce_alloc() /= 0 ) CALL ctl_stop( 'sbc_init : unable to allocate sbc_oce arrays' ) 212 IF( sbc_ice_alloc() /= 0 ) CALL ctl_stop( 'sbc_init : unable to allocate sbc_ice arrays' ) 212 213 ! 213 214 IF( .NOT.ln_isf ) THEN !* No ice-shelf in the domain : allocate and set to zero … … 306 307 ! 307 308 #if defined key_lim3 308 IF ( lk_agrif .AND. nn_ice == 0 ) THEN 309 IF( sbc_ice_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'sbc_ice_alloc : unable to allocate arrays' ) ! clem2017: allocate ice arrays in case agrif + lim + no-ice in child grid 310 ELSEIF( nn_ice == 2 ) THEN ; CALL ice_init ! LIM3 initialization 311 ENDIF 309 IF( nn_ice == 2 ) CALL ice_init ! LIM3 initialization 312 310 #endif 313 IF ( nn_ice == 3 )CALL cice_sbc_init( nsbc ) ! CICE initialization314 ! 315 IF( ln_wave ) CALL sbc_wave_init 311 IF( nn_ice == 3 ) CALL cice_sbc_init( nsbc ) ! CICE initialization 312 ! 313 IF( ln_wave ) CALL sbc_wave_init ! surface wave initialisation 316 314 ! 317 315 END SUBROUTINE sbc_init -
branches/2017/dev_r8183_ICEMODEL/NEMOGCM/NEMO/OPA_SRC/oce.F90
r7646 r8324 65 65 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rke !: kinetic energy 66 66 67 !! arrays relating to embedding ice in the ocean. These arrays need to be declared68 !! even if no ice model is required. In the no ice model or traditional levitating69 !! ice cases they contain only zeros70 !! ---------------------71 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_mass !: mass of snow and ice at current ice time step [Kg/m2]72 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_mass_b !: mass of snow and ice at previous ice time step [Kg/m2]73 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: snwice_fmass !: time evolution of mass of snow+ice [Kg/m2/s]74 75 67 !! Energy budget of the leads (open water embedded in sea ice) 76 68 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fraqsr_1lev !: fraction of solar net radiation absorbed in the first ocean level [-] … … 87 79 !! *** FUNCTION oce_alloc *** 88 80 !!---------------------------------------------------------------------- 89 INTEGER :: ierr( 7)81 INTEGER :: ierr(6) 90 82 !!---------------------------------------------------------------------- 91 83 ! … … 110 102 & riceload(jpi,jpj), STAT=ierr(2) ) 111 103 ! 112 ALLOCATE( snwice_mass(jpi,jpj) , snwice_mass_b(jpi,jpj), snwice_fmass(jpi,jpj) , STAT=ierr(3) ) 113 ! 114 ALLOCATE( fraqsr_1lev(jpi,jpj) , STAT=ierr(4) ) 104 ALLOCATE( fraqsr_1lev(jpi,jpj) , STAT=ierr(3) ) 115 105 ! 116 106 ALLOCATE( ssha_e(jpi,jpj), sshn_e(jpi,jpj), sshb_e(jpi,jpj), sshbb_e(jpi,jpj), & 117 107 & ua_e(jpi,jpj), un_e(jpi,jpj), ub_e(jpi,jpj), ubb_e(jpi,jpj), & 118 108 & va_e(jpi,jpj), vn_e(jpi,jpj), vb_e(jpi,jpj), vbb_e(jpi,jpj), & 119 & hu_e(jpi,jpj), hur_e(jpi,jpj), hv_e(jpi,jpj), hvr_e(jpi,jpj), STAT=ierr( 5) )109 & hu_e(jpi,jpj), hur_e(jpi,jpj), hv_e(jpi,jpj), hvr_e(jpi,jpj), STAT=ierr(4) ) 120 110 ! 121 ALLOCATE( ub2_b(jpi,jpj), vb2_b(jpi,jpj) , STAT=ierr( 6) )111 ALLOCATE( ub2_b(jpi,jpj), vb2_b(jpi,jpj) , STAT=ierr(5) ) 122 112 #if defined key_agrif 123 ALLOCATE( ub2_i_b(jpi,jpj), vb2_i_b(jpi,jpj) , STAT=ierr( 7) )113 ALLOCATE( ub2_i_b(jpi,jpj), vb2_i_b(jpi,jpj) , STAT=ierr(6) ) 124 114 #endif 125 115 !
Note: See TracChangeset
for help on using the changeset viewer.