- Timestamp:
- 2010-05-18T17:35:35+02:00 (14 years ago)
- Location:
- trunk/NEMO
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/NST_SRC/agrif_user.F90
r1605 r1876 73 73 USE tradmp 74 74 #endif 75 #if defined key_obc || defined key_esopa 76 USE obc_par 77 #endif 75 78 USE sol_oce 76 79 USE in_out_manager … … 105 108 ! no tracer damping on fine grids 106 109 lk_tradmp = .FALSE. 110 #endif 111 #if defined key_obc || defined key_esopa 112 ! no open boundary on fine grids 113 lk_obc = .FALSE. 107 114 #endif 108 115 ! 1. Declaration of the type of variable which have to be interpolated -
trunk/NEMO/OPA_SRC/DOM/dom_oce.F90
r1792 r1876 219 219 #else 220 220 LOGICAL, PUBLIC, PARAMETER :: lk_agrif = .FALSE. !: agrif flag 221 222 CONTAINS223 LOGICAL FUNCTION Agrif_Root()224 Agrif_Root = .TRUE.225 END FUNCTION Agrif_Root226 227 CHARACTER(len=3) FUNCTION Agrif_CFixed()228 Agrif_CFixed = '0'229 END FUNCTION Agrif_CFixed230 221 #endif 231 222 -
trunk/NEMO/OPA_SRC/DYN/dynnxt.F90
r1740 r1876 146 146 # if defined key_obc 147 147 ! !* OBC open boundaries 148 CALL obc_dyn( kt )148 IF( lk_obc ) CALL obc_dyn( kt ) 149 149 ! 150 150 IF ( lk_dynspg_exp .OR. lk_dynspg_ts ) THEN -
trunk/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r1792 r1876 186 186 187 187 #if defined key_obc 188 CALL obc_dyn( kt )! Update velocities on each open boundary with the radiation algorithm189 CALL obc_vol( kt )! Correction of the barotropic componant velocity to control the volume of the system188 IF( lk_obc ) CALL obc_dyn( kt ) ! Update velocities on each open boundary with the radiation algorithm 189 IF( lk_obc ) CALL obc_vol( kt ) ! Correction of the barotropic componant velocity to control the volume of the system 190 190 #endif 191 191 #if defined key_bdy … … 315 315 #if defined key_obc 316 316 ! caution : grad D = 0 along open boundaries 317 spgu(ji,jj) = z2dt * ztdgu * obcumask(ji,jj) 318 spgv(ji,jj) = z2dt * ztdgv * obcvmask(ji,jj) 317 IF( Agrif_Root() ) THEN 318 spgu(ji,jj) = z2dt * ztdgu * obcumask(ji,jj) 319 spgv(ji,jj) = z2dt * ztdgv * obcvmask(ji,jj) 320 ELSE 321 spgu(ji,jj) = z2dt * ztdgu 322 spgv(ji,jj) = z2dt * ztdgv 323 ENDIF 319 324 #elif defined key_bdy 320 325 ! caution : grad D = 0 along open boundaries … … 330 335 END DO 331 336 332 #if defined key_agrif 337 #if defined key_agrif 333 338 IF( .NOT. Agrif_Root() ) THEN 334 339 ! caution : grad D (fine) = grad D (coarse) at coarse/fine interface … … 338 343 IF( nbondj == 1 .OR. nbondj == 2 ) spgv(:,nlcj-2) = z2dtg * z2dt * laplacv(:,nlcj-2) * vmask(:,nlcj-2,1) 339 344 ENDIF 340 #endif 341 345 #endif 342 346 ! Add the trends multiplied by z2dt to the after velocity 343 347 ! ------------------------------------------------------- -
trunk/NEMO/OPA_SRC/OBC/obc_par.F90
r1647 r1876 25 25 !! This software is governed by the CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 26 26 !!---------------------------------------------------------------------- 27 LOGICAL, PUBLIC, PARAMETER :: lk_obc = .TRUE. !: Ocean Boundary Condition flag 27 #if ! defined key_agrif 28 LOGICAL, PUBLIC, PARAMETER :: lk_obc = .TRUE. !: Ocean Boundary Condition flag 29 #else 30 LOGICAL, PUBLIC :: lk_obc = .TRUE. !: Ocean Boundary Condition flag 31 #endif 28 32 29 33 # if defined key_eel_r5 … … 43 47 !! open boundary parameter 44 48 !!--------------------------------------------------------------------- 45 INTEGER , PARAMETER:: & !: time dimension of the BCS fields on input49 INTEGER :: & !: time dimension of the BCS fields on input 46 50 jptobc = 2 47 51 !! * EAST open boundary 48 LOGICAL , PARAMETER:: & !:52 LOGICAL :: & !: 49 53 lp_obc_east = .FALSE. !: to active or not the East open boundary 50 INTEGER , PARAMETER :: & !:54 INTEGER :: & 51 55 jpieob = jpiglo-2, & !: i-localization of the East open boundary (must be ocean U-point) 52 56 jpjed = 2, & !: j-starting indice of the East open boundary (must be land T-point) … … 56 60 57 61 !! * WEST open boundary 58 LOGICAL , PARAMETER:: & !:62 LOGICAL :: & !: 59 63 lp_obc_west = .FALSE. !: to active or not the West open boundary 60 INTEGER , PARAMETER:: & !:64 INTEGER :: & !: 61 65 jpiwob = 2, & !: i-localization of the West open boundary (must be ocean U-point) 62 66 jpjwd = 2, & !: j-starting indice of the West open boundary (must be land T-point) … … 66 70 67 71 !! * NORTH open boundary 68 LOGICAL , PARAMETER:: & !:72 LOGICAL :: & !: 69 73 lp_obc_north = .FALSE. !: to active or not the North open boundary 70 INTEGER , PARAMETER:: & !:74 INTEGER :: & !: 71 75 jpjnob = jpjglo-2, & !: j-localization of the North open boundary (must be ocean V-point) 72 76 jpind = 2, & !: i-starting indice of the North open boundary (must be land T-point) … … 76 80 77 81 !! * SOUTH open boundary 78 LOGICAL , PARAMETER:: & !:82 LOGICAL :: & !: 79 83 lp_obc_south = .FALSE. !: to active or not the South open boundary 80 INTEGER , PARAMETER:: & !:84 INTEGER :: & !: 81 85 jpjsob = 2, & !: j-localization of the South open boundary (must be ocean V-point) 82 86 jpisd = 2, & !: i-starting indice of the South open boundary (must be land T-point) -
trunk/NEMO/OPA_SRC/OBC/obc_par_EEL_R5.h90
r1152 r1876 15 15 LOGICAL, PARAMETER :: & !: 16 16 lp_obc_east = .TRUE. !: to active or not the East open boundary 17 INTEGER, PARAMETER :: & !: 17 18 INTEGER & 19 #if !defined key_agrif 20 , PARAMETER & 21 #endif 22 :: & 18 23 jpieob = jpiglo-2, & !: i-localization of the East open boundary (must be ocean U-point) 19 24 jpjed = 2, & !: j-starting indice of the East open boundary (must be land T-point) … … 25 30 LOGICAL, PARAMETER :: & !: 26 31 lp_obc_west = .TRUE. !: to active or not the West open boundary 27 INTEGER, PARAMETER :: & 32 33 INTEGER & 34 #if !defined key_agrif 35 , PARAMETER & 36 #endif 37 :: & 28 38 jpiwob = 2, & !: i-localization of the West open boundary (must be ocean U-point) 29 39 jpjwd = 2, & !: j-starting indice of the West open boundary (must be land T-point) … … 35 45 LOGICAL, PARAMETER :: & !: 36 46 lp_obc_north = .FALSE. !: to active or not the North open boundary 37 INTEGER, PARAMETER :: & !: 47 48 INTEGER & 49 #if !defined key_agrif 50 , PARAMETER & 51 #endif 52 :: & 38 53 jpjnob = jpjglo-2, & !: j-localization of the North open boundary (must be ocean V-point) 39 54 jpind = 2, & !: i-starting indice of the North open boundary (must be land T-point) … … 45 60 LOGICAL, PARAMETER :: & !: 46 61 lp_obc_south = .FALSE. !: to active or not the South open boundary 47 INTEGER, PARAMETER :: & !: 62 63 INTEGER & 64 #if !defined key_agrif 65 , PARAMETER & 66 #endif 67 :: & 48 68 jpjsob = 2, & !: j-localization of the South open boundary (must be ocean V-point) 49 69 jpisd = 2, & !: i-starting indice of the South open boundary (must be land T-point) -
trunk/NEMO/OPA_SRC/OBC/obc_par_POMME_R025.h90
r1648 r1876 4 4 !! open boundary parameter : POMME configuration 5 5 !!--------------------------------------------------------------------- 6 INTEGER, PARAMETER :: & !: time dimension of the BCS fields on input7 jptobc = 146 INTEGER, PARAMETER :: jptobc = 14 7 !: time dimension of the BCS fields on input 8 8 9 9 !! * EAST open boundary 10 10 LOGICAL, PARAMETER :: & !: 11 11 lp_obc_east = .TRUE. !: 12 INTEGER, PARAMETER :: & !:13 12 13 INTEGER & 14 #if !defined key_agrif 15 , PARAMETER & 16 #endif 17 :: & 14 18 ! * default values * 15 19 !jpieob = jpiglo-2, & !: i-localization of the East open boundary (must be ocean U-point) 16 20 !jpjed = 2, & !: j-starting indice of the East open boundary (must be land T-point) 17 21 !jpjef = jpjglo-1, & !: j-ending indice of the East open boundary (must be land T-point) 18 19 22 jpieob = jpiglo-2, & !: i-localization of the East open boundary (must be ocean U-point) 20 23 jpjed = 1, & !: j-starting indice of the East open boundary (must be land T-point) 21 24 jpjef = jpjglo, & !: j-ending indice of the East open boundary (must be land T-point) 22 23 25 jpjedp1 = jpjed+1, & !: first ocean point " " 24 26 jpjefm1 = jpjef-1 !: last ocean point " " … … 27 29 LOGICAL, PARAMETER :: & !: 28 30 lp_obc_west = .TRUE. !: to active or not the West open boundary 29 INTEGER, PARAMETER :: & !:30 31 32 INTEGER & 33 #if !defined key_agrif 34 , PARAMETER & 35 #endif 36 :: & 31 37 ! * default values * 32 38 !jpiwob = 2, & !: i-localization of the West open boundary (must be ocean U-point) 33 39 !jpjwd = 2, & !: j-starting indice of the West open boundary (must be land T-point) 34 40 !jpjwf = jpjglo-1, & !: j-ending indice of the West open boundary (must be land T-point) 35 36 41 jpiwob = 2, & !: i-localization of the West open boundary (must be ocean U-point) 37 42 jpjwd = 1, & !: j-starting indice of the West open boundary (must be land T-point) 38 43 jpjwf = jpjglo, & !: j-ending indice of the West open boundary (must be land T-point) 39 40 44 jpjwdp1 = jpjwd+1, & !: first ocean point " " 41 45 jpjwfm1 = jpjwf-1 !: last ocean point " " … … 44 48 LOGICAL, PARAMETER :: & !: 45 49 lp_obc_north = .TRUE. !: 46 INTEGER, PARAMETER :: & !:47 50 51 INTEGER & 52 #if !defined key_agrif 53 , PARAMETER & 54 #endif 55 :: & 48 56 ! * default values * 49 57 !jpjnob = jpjglo-2, & !: j-localization of the North open boundary (must be ocean V-point) 50 58 !jpind = 2, & !: i-starting indice of the North open boundary (must be land T-point) 51 59 !jpinf = jpiglo-1, & !: i-ending indice of the North open boundary (must be land T-point) 52 53 60 jpjnob = jpjglo-2, & !: j-localization of the North open boundary (must be ocean V-point) 54 61 jpind = 1, & !: i-starting indice of the North open boundary (must be land T-point) 55 62 jpinf = jpiglo, & !: i-ending indice of the North open boundary (must be land T-point) 56 57 63 jpindp1 = jpind+1, & !: first ocean point " " 58 64 jpinfm1 = jpinf-1 !: last ocean point " " … … 61 67 LOGICAL, PARAMETER :: & !: 62 68 lp_obc_south = .TRUE. !: INDICE to active or not the South open boundary 63 INTEGER, PARAMETER :: & !:64 69 70 INTEGER & 71 #if !defined key_agrif 72 , PARAMETER & 73 #endif 74 :: & 65 75 ! * default values * 66 76 !jpjsob = 2, & !: j-localization of the South open boundary (must be ocean V-point) 67 77 !jpisd = 2, & !: i-starting indice of the South open boundary (must be land T-point) 68 78 !jpisf = jpiglo-1, & !: i-ending indice of the South open boundary (must be land T-point) 69 70 79 jpjsob = 2, & !: j-localization of the South open boundary (must be ocean V-point) 71 80 jpisd = 1, & !: i-starting indice of the South open boundary (must be land T-point) 72 81 jpisf = jpiglo, & !: i-ending indice of the South open boundary (must be land T-point) 73 74 82 jpisdp1 = jpisd+1, & !: first ocean point " " 75 83 jpisfm1 = jpisf-1 !: last ocean point " " -
trunk/NEMO/OPA_SRC/OBC/obcdta.F90
r1732 r1876 469 469 ENDIF 470 470 ELSE 471 #if defined key_agrif 472 IF ( ASSOCIATED(ztcobc) ) DEALLOCATE ( ztcobc ) 473 #else 471 474 IF ( ALLOCATED(ztcobc) ) DEALLOCATE ( ztcobc ) 475 #endif 472 476 ALLOCATE (ztcobc(itobc)) 473 477 DO ji=1,1 ! use a dummy loop to read ztcobc only once -
trunk/NEMO/OPA_SRC/SOL/solmat.F90
r1792 r1876 99 99 100 100 # elif defined key_dynspg_flt && defined key_obc 101 102 DO jj = 2, jpjm1 ! matrix of free surface elliptic system with open boundaries103 DO ji = 2, jpim1104 zcoef = z2dt * z2dt * grav * bmask(ji,jj)105 ! ! south coefficient106 IF( lp_obc_south .AND. ( jj == njs0p1 ) ) THEN107 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1)*(1.-vsmsk(ji,1))108 ELSE109 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1)110 END IF111 gcp(ji,jj,1) = zcoefs112 !113 ! ! west coefficient114 IF( lp_obc_west .AND. ( ji == niw0p1 ) ) THEN115 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj)*(1.-uwmsk(jj,1))116 ELSE117 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj)118 END IF119 gcp(ji,jj,2) = zcoefw120 !121 ! ! east coefficient122 IF( lp_obc_east .AND. ( ji == nie0 ) ) THEN123 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj)*(1.-uemsk(jj,1))124 ELSE125 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj)126 END IF127 gcp(ji,jj,3) = zcoefe128 !129 ! ! north coefficient130 IF( lp_obc_north .AND. ( jj == njn0 ) ) THEN131 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj)*(1.-vnmsk(ji,1))132 ELSE101 IF( Agrif_Root() ) THEN 102 DO jj = 2, jpjm1 ! matrix of free surface elliptic system with open boundaries 103 DO ji = 2, jpim1 104 zcoef = z2dt * z2dt * grav * bmask(ji,jj) 105 ! ! south coefficient 106 IF( lp_obc_south .AND. ( jj == njs0p1 ) ) THEN 107 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1)*(1.-vsmsk(ji,1)) 108 ELSE 109 zcoefs = -zcoef * hv(ji,jj-1) * e1v(ji,jj-1)/e2v(ji,jj-1) 110 END IF 111 gcp(ji,jj,1) = zcoefs 112 ! 113 ! ! west coefficient 114 IF( lp_obc_west .AND. ( ji == niw0p1 ) ) THEN 115 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj)*(1.-uwmsk(jj,1)) 116 ELSE 117 zcoefw = -zcoef * hu(ji-1,jj) * e2u(ji-1,jj)/e1u(ji-1,jj) 118 END IF 119 gcp(ji,jj,2) = zcoefw 120 ! 121 ! ! east coefficient 122 IF( lp_obc_east .AND. ( ji == nie0 ) ) THEN 123 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj)*(1.-uemsk(jj,1)) 124 ELSE 125 zcoefe = -zcoef * hu(ji,jj) * e2u(ji,jj)/e1u(ji,jj) 126 END IF 127 gcp(ji,jj,3) = zcoefe 128 ! 129 ! ! north coefficient 130 IF( lp_obc_north .AND. ( jj == njn0 ) ) THEN 131 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj)*(1.-vnmsk(ji,1)) 132 ELSE 133 133 zcoefn = -zcoef * hv(ji,jj) * e1v(ji,jj)/e2v(ji,jj) 134 END IF 135 gcp(ji,jj,4) = zcoefn 136 ! 137 ! ! diagonal coefficient 138 gcdmat(ji,jj) = e1t(ji,jj)*e2t(ji,jj)*bmask(ji,jj) & 139 & - zcoefs -zcoefw -zcoefe -zcoefn 134 END IF 135 gcp(ji,jj,4) = zcoefn 136 ! 137 ! ! diagonal coefficient 138 gcdmat(ji,jj) = e1t(ji,jj)*e2t(ji,jj)*bmask(ji,jj) & 139 & - zcoefs -zcoefw -zcoefe -zcoefn 140 END DO 140 141 END DO 141 END DO142 ENDIF 142 143 #endif 143 144 144 IF( .NOT. Agrif_Root() ) THEN ! Fine grid boundaries 145 #if defined key_agrif 146 IF( .NOT.AGRIF_ROOT() ) THEN 145 147 ! 146 148 IF( nbondi == -1 .OR. nbondi == 2 ) bmask(2 ,: ) = 0.e0 … … 191 193 ! 192 194 ENDIF 195 #endif 193 196 194 197 ! 2. Boundary conditions -
trunk/NEMO/OPA_SRC/TRA/tranxt.F90
r1601 r1876 38 38 USE agrif_opa_update 39 39 USE agrif_opa_interp 40 USE obc_oce 40 41 41 42 IMPLICIT NONE … … 101 102 ! 102 103 #if defined key_obc 103 CALL obc_tra( kt )! OBC open boundaries104 IF( lk_obc ) CALL obc_tra( kt ) ! OBC open boundaries 104 105 #endif 105 106 #if defined key_bdy -
trunk/NEMO/OPA_SRC/par_POMME_R025.h90
r1648 r1876 22 22 jp_cfg = 025 , & !: resolution of the configuration (degrees) 23 23 ! Original data size 24 25 24 ! ORCA025 global grid size 26 25 jpiglo_ORCA025 = 1442, & 27 26 jpjglo_ORCA025 = 1021, & ! not used currently 28 29 27 ! POMME "global" domain localisation in the ORCA025 global grid 30 28 jpi_iw = 1059, & … … 32 30 jpj_js = 661, & 33 31 jpj_jn = 700, & 34 35 32 jpidta = ( jpi_ie - jpi_iw + 1 ), & !: =30 first horizontal dimension > or = to jpi 36 33 jpjdta = ( jpj_jn - jpj_js + 1 ), & !: =40 second > or = to jpj 37 34 jpkdta = 46 , & !: number of levels > or = to jpk 38 39 35 ! total domain matrix size 40 36 jpiglo = jpidta, & !: first dimension of global domain --> i
Note: See TracChangeset
for help on using the changeset viewer.