Changeset 3066 for branches/2011/dev_UKM0_2011/NEMOGCM/NEMO
- Timestamp:
- 2011-11-09T14:09:37+01:00 (13 years ago)
- Location:
- branches/2011/dev_UKM0_2011/NEMOGCM/NEMO
- Files:
-
- 9 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/LIM_SRC_2/iceini_2.F90
r2730 r3066 23 23 USE par_ice_2 ! LIM2 parameters 24 24 USE thd_ice_2 ! LIM2 thermodynamical variables 25 USE limrhg ! LIM2 rheology 25 USE limrhg ! LIM2 EVP rheology 26 USE limrhg_2 ! LIM2 VP rheology (requires "key_lim2_vp") 26 27 USE ice_2 ! LIM2 ice variable 27 28 USE limmsh_2 ! LIM2 mesh … … 65 66 #if ! defined key_lim2_vp 66 67 ierr = ierr + lim_rhg_alloc () 68 #else 69 ierr = ierr + lim_rhg_alloc_2 () 67 70 #endif 68 71 IF( lk_mpp ) CALL mpp_sum( ierr ) -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/LIM_SRC_2/limistate_2.F90
r2528 r3066 124 124 syyst (:,:) = 0.e0 125 125 sxyst (:,:) = 0.e0 126 #if ! defined key_lim2_vp 127 stress1_i (:,:) = 0._wp ! EVP rheology 128 stress2_i (:,:) = 0._wp 129 stress12_i(:,:) = 0._wp 130 #endif 126 131 127 132 !-- lateral boundary conditions -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/DOM/phycst.F90
r2528 r3066 9 9 !! - ! 2006-08 (G. Madec) style 10 10 !! 3.2 ! 2006-08 (S. Masson, G. Madec) suppress useless variables + style 11 !! 3.4 ! 2011-11 (C. Harris) minor changes for CICE constants 11 12 !!---------------------------------------------------------------------- 12 13 … … 48 49 #endif 49 50 51 #if defined key_cice 52 REAL(wp), PUBLIC :: rau0 = 1026._wp !: reference volumic mass (density) (kg/m3) 53 #else 50 54 REAL(wp), PUBLIC :: rau0 = 1035._wp !: reference volumic mass (density) (kg/m3) 55 #endif 51 56 REAL(wp), PUBLIC :: rau0r !: reference specific volume (m3/kg) 52 57 REAL(wp), PUBLIC :: rcp = 4.e+3_wp !: ocean specific heat 53 58 REAL(wp), PUBLIC :: ro0cpr !: = 1. / ( rau0 * rcp ) 54 59 55 #if defined key_lim3 60 #if defined key_lim3 || defined key_cice 56 61 REAL(wp), PUBLIC :: rcdsn = 0.31_wp !: thermal conductivity of snow 57 62 REAL(wp), PUBLIC :: rcdic = 2.034396_wp !: thermal conductivity of fresh ice … … 100 105 rsiyea = 365.25 * rday * 2. * rpi / 6.283076 101 106 rsiday = rday / ( 1. + rday / rsiyea ) 107 #if defined key_cice 108 omega = 7.292116e-05 109 #else 102 110 omega = 2. * rpi / rsiday 111 #endif 103 112 104 113 rau0r = 1. / rau0 -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/IOM/prtctl.F90
r2715 r3066 5 5 !!====================================================================== 6 6 !! History : 9.0 ! 05-07 (C. Talandier) original code 7 !! 3.4 ! 11-11 (C. Harris) decomposition changes for running with CICE 7 8 !!---------------------------------------------------------------------- 8 9 USE dom_oce ! ocean space and time domain variables … … 434 435 435 436 ijpi = ( jpiglo-2*jpreci + (isplt-1) ) / isplt + 2*jpreci 437 #if defined key_nemocice_decomp 438 ijpj = ( jpjglo+1-2*jprecj + (jsplt-1) ) / jsplt + 2*jprecj 439 #else 436 440 ijpj = ( jpjglo-2*jprecj + (jsplt-1) ) / jsplt + 2*jprecj 441 #endif 437 442 438 443 ALLOCATE(ilcitl (isplt,jsplt)) … … 445 450 446 451 IF( irestil == 0 ) irestil = isplt 452 #if defined key_nemocice_decomp 453 454 ! In order to match CICE the size of domains in NEMO has to be changed 455 ! The last line of blocks (west) will have fewer points 456 DO jj = 1, jsplt 457 DO ji=1, isplt-1 458 ilcitl(ji,jj) = ijpi 459 END DO 460 ilcitl(isplt,jj) = jpiglo - (isplt - 1) * (ijpi - nrecil) 461 END DO 462 463 #else 464 447 465 DO jj = 1, jsplt 448 466 DO ji = 1, irestil … … 453 471 END DO 454 472 END DO 473 474 #endif 455 475 456 476 IF( irestjl == 0 ) irestjl = jsplt 477 #if defined key_nemocice_decomp 478 479 ! Same change to domains in North-South direction as in East-West. 480 DO ji = 1, isplt 481 DO jj=1, jsplt-1 482 ilcjtl(ji,jj) = ijpj 483 END DO 484 ilcjtl(ji,jsplt) = jpjglo - (jsplt - 1) * (ijpj - nrecjl) 485 END DO 486 487 #else 488 457 489 DO ji = 1, isplt 458 490 DO jj = 1, irestjl … … 463 495 END DO 464 496 END DO 465 497 498 #endif 466 499 zidom = nrecil 467 500 DO ji = 1, isplt -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/LBC/mppini.F90
r2715 r3066 125 125 !! ! 98-05 (M. Imbard, J. Escobar, L. Colombet ) SHMEM and MPI versions 126 126 !! 8.5 ! 02-08 (G. Madec) F90 : free form 127 !! 3.4 ! 11-11 (C. Harris) decomposition changes for running with CICE 127 128 !!---------------------------------------------------------------------- 128 129 INTEGER :: ji, jj, jn ! dummy loop indices … … 152 153 153 154 IF( iresti == 0 ) iresti = jpni 155 156 #if defined key_nemocice_decomp 157 ! In order to match CICE the size of domains in NEMO has to be changed 158 ! The last line of blocks (west) will have fewer points 159 160 DO jj = 1, jpnj 161 DO ji=1, jpni-1 162 ilcit(ji,jj) = jpi 163 END DO 164 ilcit(jpni,jj) = jpiglo - (jpni - 1) * (jpi - nreci) 165 END DO 166 167 #else 168 154 169 DO jj = 1, jpnj 155 170 DO ji = 1, iresti … … 161 176 END DO 162 177 178 #endif 163 179 IF( irestj == 0 ) irestj = jpnj 180 181 #if defined key_nemocice_decomp 182 ! Same change to domains in North-South direction as in East-West. 183 DO ji=1,jpni 184 DO jj=1,jpnj-1 185 ilcjt(ji,jj) = jpj 186 END DO 187 ilcjt(ji,jpnj) = jpjglo - (jpnj - 1) * (jpj - nrecj) 188 END DO 189 190 #else 191 164 192 DO ji = 1, jpni 165 193 DO jj = 1, irestj … … 171 199 END DO 172 200 201 #endif 173 202 IF(lwp) THEN 174 203 WRITE(numout,*) -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/SBC/sbc_ice.F90
r2777 r3066 6 6 !! History : 3.0 ! 2006-08 (G. Madec) Surface module 7 7 !! 3.2 ! 2009-06 (S. Masson) merge with ice_oce 8 !! 4.0 ! 2011-01 (A. R. Porter, STFC Daresbury) dynamical allocation 8 !! 3.3.1! 2011-01 (A. R. Porter, STFC Daresbury) dynamical allocation 9 !! 3.4 ! 2011-11 (C. Harris) CICE added as an option 9 10 !!---------------------------------------------------------------------- 10 #if defined key_lim3 || defined key_lim2 11 #if defined key_lim3 || defined key_lim2 || defined key_cice 11 12 !!---------------------------------------------------------------------- 12 13 !! 'key_lim2' or 'key_lim3' : LIM-2 or LIM-3 sea-ice model … … 19 20 USE par_ice_2 ! LIM-2 parameters 20 21 # endif 22 # if defined key_cice 23 USE ice_domain_size, only: ncat 24 #endif 21 25 USE lib_mpp ! MPP library 22 26 USE in_out_manager ! I/O manager … … 30 34 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .TRUE. !: LIM-2 ice model 31 35 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 36 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE 32 37 # if defined key_lim2_vp 33 38 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'I' !: VP : 'I'-grid ice-velocity (B-grid lower left corner) … … 39 44 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 40 45 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .TRUE. !: LIM-3 ice model 46 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE 41 47 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = 'C' !: 'C'-grid ice-velocity 42 48 # endif 49 # if defined key_cice 50 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 51 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 52 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .TRUE. !: CICE ice model 53 CHARACTER(len=1), PUBLIC :: cp_ice_msh = 'F' !: 'F'-grid ice-velocity 54 # endif 43 55 56 #if defined key_lim3 || defined key_lim2 44 57 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qns_ice !: non solar heat flux over ice [W/m2] 45 58 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice !: solar heat flux over ice [W/m2] … … 60 73 # endif 61 74 75 #elif defined key_cice 76 ! 77 ! for consistency with LIM, these are declared with three dimensions 78 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qlw_ice !: incoming long-wave 79 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qla_ice !: latent flux over ice [W/m2] 80 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: qsr_ice !: solar heat flux over ice [W/m2] 81 ! 82 ! other forcing arrays are two dimensional 83 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ss_iou !: x ice-ocean surface stress at NEMO U point 84 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ss_iov !: y ice-ocean surface stress at NEMO V point 85 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: emp_ice !: sublimation-snow budget over ice [kg/m2] 86 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: tatm_ice !: air temperature 87 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: qatm_ice !: specific humidity 88 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndi_ice !: i wind at T point 89 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: wndj_ice !: j wind at T point 90 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: nfrzmlt !: NEMO frzmlt 91 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_iu !: ice fraction at NEMO U point 92 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: fr_iv !: ice fraction at NEMO V point 93 ! 94 ! finally, arrays corresponding to different ice categories 95 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: a_i !: category ice fraction 96 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: topmelt !: category topmelt 97 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: botmelt !: category botmelt 98 #endif 99 62 100 !!---------------------------------------------------------------------- 63 101 !! NEMO/OPA 4.0 , NEMO Consortium (2011) … … 71 109 !! *** FUNCTION sbc_ice_alloc *** 72 110 !!---------------------------------------------------------------------- 111 #if defined key_lim3 || defined key_lim2 73 112 ALLOCATE( qns_ice (jpi,jpj,jpl) , qsr_ice (jpi,jpj,jpl) , & 74 113 & qla_ice (jpi,jpj,jpl) , dqla_ice(jpi,jpj,jpl) , & … … 77 116 & utau_ice(jpi,jpj) , vtau_ice(jpi,jpj) , & 78 117 & fr1_i0 (jpi,jpj) , fr2_i0 (jpi,jpj) , & 79 # 118 #if defined key_lim3 80 119 & emp_ice(jpi,jpj) , tatm_ice(jpi,jpj) , STAT= sbc_ice_alloc ) 81 # 120 #else 82 121 & emp_ice(jpi,jpj) , STAT= sbc_ice_alloc ) 83 # endif 122 #endif 123 #elif defined key_cice 124 ALLOCATE( qla_ice(jpi,jpj,1) , qlw_ice(jpi,jpj,1) , qsr_ice(jpi,jpj,1) , & 125 wndi_ice(jpi,jpj) , tatm_ice(jpi,jpj) , qatm_ice(jpi,jpj) , & 126 wndj_ice(jpi,jpj) , nfrzmlt(jpi,jpj) , ss_iou(jpi,jpj) , & 127 ss_iov(jpi,jpj) , fr_iu(jpi,jpj) , fr_iv(jpi,jpj) , & 128 a_i(jpi,jpj,ncat) , topmelt(jpi,jpj,ncat) , botmelt(jpi,jpj,ncat), STAT= sbc_ice_alloc ) 129 #endif 84 130 ! 85 131 IF( lk_mpp ) CALL mpp_sum ( sbc_ice_alloc ) … … 89 135 #else 90 136 !!---------------------------------------------------------------------- 91 !! Default option NO LIM 2.0 or 3.0 sea-ice model137 !! Default option NO LIM 2.0 or 3.0 or CICE sea-ice model 92 138 !!---------------------------------------------------------------------- 93 139 LOGICAL , PUBLIC, PARAMETER :: lk_lim2 = .FALSE. !: no LIM-2 ice model 94 140 LOGICAL , PUBLIC, PARAMETER :: lk_lim3 = .FALSE. !: no LIM-3 ice model 141 LOGICAL , PUBLIC, PARAMETER :: lk_cice = .FALSE. !: no CICE ice model 95 142 CHARACTER(len=1), PUBLIC, PARAMETER :: cp_ice_msh = '-' !: no grid ice-velocity 96 143 #endif -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/SBC/sbcblk_core.F90
r2777 r3066 14 14 !! 3.2 ! 2009-04 (B. Lemaire) Introduce iom_put 15 15 !! 3.3 ! 2010-10 (S. Masson) add diurnal cycle 16 !! 3.4 ! 2011-11 (C. Harris) Fill arrays required by CICE 16 17 !!---------------------------------------------------------------------- 17 18 … … 34 35 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 35 36 USE prtctl ! Print control 36 #if defined key_lim3 37 #if defined key_lim3 || defined key_cice 37 38 USE sbc_ice ! Surface boundary condition: ice fields 38 39 #endif … … 182 183 ! ! surface ocean fluxes computed with CLIO bulk formulea 183 184 IF( MOD( kt - 1, nn_fsbc ) == 0 ) CALL blk_oce_core( sf, sst_m, ssu_m, ssv_m ) 185 186 #if defined key_cice 187 IF( MOD( kt - 1, nn_fsbc ) == 0 ) THEN 188 qlw_ice(:,:,1) = sf(jp_qlw)%fnow(:,:,1) 189 qsr_ice(:,:,1) = sf(jp_qsr)%fnow(:,:,1) 190 tatm_ice(:,:) = sf(jp_tair)%fnow(:,:,1) 191 qatm_ice(:,:) = sf(jp_humi)%fnow(:,:,1) 192 tprecip(:,:) = sf(jp_prec)%fnow(:,:,1) * rn_pfac 193 sprecip(:,:) = sf(jp_snow)%fnow(:,:,1) * rn_pfac 194 wndi_ice(:,:) = sf(jp_wndi)%fnow(:,:,1) 195 wndj_ice(:,:) = sf(jp_wndj)%fnow(:,:,1) 196 ENDIF 197 #endif 184 198 ! 185 199 END SUBROUTINE sbc_blk_core -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/SBC/sbcmod.F90
r3062 r3066 11 11 !! - ! 2010-11 (G. Madec) ice-ocean stress always computed at each ocean time-step 12 12 !! - ! 2010-10 (J. Chanut, C. Bricaud, G. Madec) add the surface pressure forcing 13 !! 3.4 ! 2011-11 (C. Harris) CICE added as an option 13 14 !!---------------------------------------------------------------------- 14 15 … … 32 33 USE sbcice_lim ! surface boundary condition: LIM 3.0 sea-ice model 33 34 USE sbcice_lim_2 ! surface boundary condition: LIM 2.0 sea-ice model 35 USE sbcice_cice ! surface boundary condition: CICE sea-ice model 34 36 USE sbccpl ! surface boundary condition: coupled florulation 35 37 USE cpl_oasis3, ONLY:lk_cpl ! are we in coupled mode? … … 94 96 IF( lk_lim2 ) nn_ice = 2 95 97 IF( lk_lim3 ) nn_ice = 3 98 IF( lk_cice ) nn_ice = 4 96 99 ENDIF 97 100 IF( cp_cfg == 'gyre' ) THEN ! GYRE configuration … … 144 147 & CALL ctl_warn( 'nn_fsbc is NOT a multiple of the number of time steps in a day' ) 145 148 ! 146 IF( nn_ice == 2 .AND. .NOT.( ln_blk_clio .OR. ln_blk_core .OR. lk_cpl ) ) & 147 & CALL ctl_stop( 'sea-ice model requires a bulk formulation or coupled configuration' ) 149 IF( ( nn_ice == 2 .OR. nn_ice ==3 ) .AND. .NOT.( ln_blk_clio .OR. ln_blk_core .OR. lk_cpl ) ) & 150 & CALL ctl_stop( 'LIM sea-ice model requires a bulk formulation or coupled configuration' ) 151 IF( nn_ice == 4 .AND. .NOT.( ln_blk_core .OR. lk_cpl ) ) & 152 & CALL ctl_stop( 'CICE sea-ice model requires ln_blk_core or lk_cpl' ) 153 IF( nn_ice == 4 .AND. ( .NOT. ( cp_cfg == 'orca' ) .OR. lk_agrif ) ) & 154 & CALL ctl_stop( 'CICE sea-ice model currently only available in a global ORCA configuration without AGRIF' ) 148 155 149 156 IF( ln_dm2dc ) nday_qsr = -1 ! initialisation flag … … 182 189 IF( nsbc == 5 ) WRITE(numout,*) ' coupled formulation' 183 190 ENDIF 191 192 IF( nn_ice == 4 ) CALL cice_sbc_init (nsbc) 184 193 ! 185 194 END SUBROUTINE sbc_init … … 256 265 ! 257 266 CASE( 3 ) ; CALL sbc_ice_lim ( kt, nsbc ) ! LIM-3 ice model 267 ! 268 CASE( 4 ) ; CALL sbc_ice_cice ( kt, nsbc ) ! CICE ice model 258 269 END SELECT 259 270 … … 338 349 & tab2d_2=vtau , clinfo2=' vtau - : ', mask2=vmask, ovlap=1 ) 339 350 ENDIF 351 352 IF( kt == nitend ) CALL sbc_final ! Close down surface module if necessary 340 353 ! 341 354 END SUBROUTINE sbc 355 356 SUBROUTINE sbc_final 357 !!--------------------------------------------------------------------- 358 !! *** ROUTINE sbc_final *** 359 !!--------------------------------------------------------------------- 360 361 !----------------------------------------------------------------- 362 ! Finalize CICE (if used) 363 !----------------------------------------------------------------- 364 365 IF( nn_ice == 4 ) CALL cice_sbc_final 366 ! 367 END SUBROUTINE sbc_final 342 368 343 369 !!====================================================================== -
branches/2011/dev_UKM0_2011/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r3062 r3066 27 27 !! 3.3 ! 2010-05 (K. Mogensen, A. Weaver, M. Martin, D. Lea) Assimilation interface 28 28 !! - ! 2010-10 (C. Ethe, G. Madec) reorganisation of initialisation phase 29 !! 4.0 ! 2011-01 (A. R. Porter, STFC Daresbury) dynamical allocation 29 !! 3.3.1! 2011-01 (A. R. Porter, STFC Daresbury) dynamical allocation 30 !! 3.4 ! 2011-11 (C. Harris) decomposition changes for running with CICE 30 31 !!---------------------------------------------------------------------- 31 32 … … 247 248 IF( Agrif_Root() ) THEN 248 249 jpi = ( jpiglo-2*jpreci + (jpni-1) ) / jpni + 2*jpreci ! first dim. 250 #if defined key_nemocice_decomp 251 jpj = ( jpjglo+1-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 252 #else 249 253 jpj = ( jpjglo-2*jprecj + (jpnj-1) ) / jpnj + 2*jprecj ! second dim. 254 #endif 250 255 jpk = jpkdta ! third dim 251 256 jpim1 = jpi-1 ! inner domain indices
Note: See TracChangeset
for help on using the changeset viewer.