- Timestamp:
- 2011-03-03T13:48:06+01:00 (13 years ago)
- Location:
- branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC/obc_oce.F90
r2592 r2647 4 4 !! Open Boundary Cond. : define related variables 5 5 !!============================================================================== 6 !! history : OPA ! 1991-01 (CLIPPER) Original code 7 !! NEMO 1.0 ! 2002-02 (C. Talandier) modules, F90 8 !!---------------------------------------------------------------------- 9 #if defined key_obc 6 10 !!---------------------------------------------------------------------- 7 11 !! 'key_obc' : Open Boundary Condition 8 12 !!---------------------------------------------------------------------- 9 !! history :10 !! 8.0 01/91 (CLIPPER) Original code11 !! 8.5 06/02 (C. Talandier) modules12 !! 06/04 (F. Durand) ORCA2_ZIND config13 !!14 !!----------------------------------------------------------------------15 !! * Modules used16 13 USE par_oce ! ocean parameters 17 14 USE obc_par ! open boundary condition parameters 18 15 19 #if defined key_obc20 21 16 IMPLICIT NONE 22 17 PUBLIC 18 19 PUBLIC obc_oce_alloc ! called by obcini.F90 module 23 20 24 21 !!---------------------------------------------------------------------- … … 26 23 !!---------------------------------------------------------------------- 27 24 ! 28 ! !!* Namelist namobc: open boundary condition *25 ! !!* Namelist namobc: open boundary condition * 29 26 INTEGER :: nn_obcdta = 0 !: = 0 use the initial state as obc data 30 27 ! ! = 1 read obc data in obcxxx.dta files … … 63 60 !!General variables for open boundaries: 64 61 !!-------------------------------------- 65 LOGICAL :: & !: 66 lfbceast, lfbcwest, & !: logical flag for a fixed East and West open boundaries 67 lfbcnorth, lfbcsouth !: logical flag for a fixed North and South open boundaries 68 ! ! These logical flags are set to 'true' if damping time 69 ! ! scale are set to 0 in the namelist, for both inflow and outflow). 62 LOGICAL :: lfbceast, lfbcwest !: logical flag for a fixed East and West open boundaries 63 LOGICAL :: lfbcnorth, lfbcsouth !: logical flag for a fixed North and South open boundaries 64 ! ! These logical flags are set to 'true' if damping time 65 ! ! scale are set to 0 in the namelist, for both inflow and outflow). 70 66 71 67 REAL(wp), PUBLIC :: obcsurftot !: Total lateral surface of open boundaries … … 97 93 ! ! in the obcdyn.F90 routine 98 94 99 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshfoe_b 95 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshfoe_b !: east boundary ssh correction averaged over the barotropic loop 100 96 ! ! (if Flather's algoritm applied at open boundary) 101 97 … … 224 220 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: usmsk, vsmsk, tsmsk !: 2D mask for the South OB 225 221 226 #else227 !!----------------------------------------------------------------------228 !! Default option : Empty module229 !!----------------------------------------------------------------------230 #endif231 232 222 !!---------------------------------------------------------------------- 233 223 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 234 224 !! $Id$ 235 225 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 236 !!====================================================================== 237 #if defined key_obc 226 !!---------------------------------------------------------------------- 238 227 CONTAINS 239 228 240 FUNCTION obc_oce_alloc()241 IMPLICIT none242 243 INTEGER :: obc_oce_alloc244 245 ALLOCATE( &229 INTEGER FUNCTION obc_oce_alloc() 230 !!---------------------------------------------------------------------- 231 !! *** FUNCTION obc_oce_alloc *** 232 !!---------------------------------------------------------------------- 233 234 ALLOCATE( & 246 235 !! East open boundary 247 236 obctmsk(jpi,jpj), obcumask(jpi,jpj), obcvmask(jpi,jpj), & … … 283 272 usmsk(jpi,jpk), vsmsk(jpi,jpk), tsmsk(jpi,jpk), & 284 273 !! 285 S tat=obc_oce_alloc )286 274 STAT=obc_oce_alloc ) 275 ! 287 276 END FUNCTION obc_oce_alloc 288 #endif ! Defined key_obc 289 277 278 #else 279 !!---------------------------------------------------------------------- 280 !! Default option Empty module No OBC 281 !!---------------------------------------------------------------------- 282 #endif 283 284 !!====================================================================== 290 285 END MODULE obc_oce -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC/obc_par.F90
r2528 r2647 4 4 !! Open Boundary Cond. : define related parameters 5 5 !!============================================================================== 6 !! history : OPA ! 1991-01 (CLIPPER) Original code 7 !! NEMO 1.0 ! 2002-04 (C. Talandier) modules 8 !! - ! 2004/06 (F. Durand) jptobc is defined as a parameter 9 !!---------------------------------------------------------------------- 6 10 #if defined key_obc 7 11 !!---------------------------------------------------------------------- 8 12 !! 'key_obc' : Open Boundary Condition 9 13 !!---------------------------------------------------------------------- 10 !! history :11 !! 8.0 01/91 (CLIPPER) Original code12 !! 9.0 06/02 (C. Talandier) modules13 !! 06/04 (F. Durand) ORCA_R2_ZIND config14 !! 06/04 (F. Durand) jptobc is defined as a parameter,15 !! in order to allow time-dependent OBCs fields on input16 !!----------------------------------------------------------------------17 !! * Modules used18 14 USE par_oce ! ocean parameters 19 15 20 16 IMPLICIT NONE 21 17 PUBLIC 22 !!---------------------------------------------------------------------- 23 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 24 !! $Id$ 25 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 26 !!---------------------------------------------------------------------- 18 27 19 #if ! defined key_agrif 28 20 LOGICAL, PUBLIC, PARAMETER :: lk_obc = .TRUE. !: Ocean Boundary Condition flag … … 47 39 !! open boundary parameter 48 40 !!--------------------------------------------------------------------- 49 INTEGER, PARAMETER :: &!: time dimension of the BCS fields on input50 jptobc = 241 INTEGER, PARAMETER :: jptobc = 2 !: time dimension of the BCS fields on input 42 51 43 !! * EAST open boundary 52 LOGICAL, PARAMETER :: & !: 53 lp_obc_east = .FALSE. !: to active or not the East open boundary 54 INTEGER & 44 LOGICAL, PARAMETER :: lp_obc_east = .FALSE. !: to active or not the East open boundary 45 INTEGER & 55 46 #if !defined key_agrif 56 47 , PARAMETER & … … 64 55 65 56 !! * WEST open boundary 66 LOGICAL, PARAMETER :: & !: 67 lp_obc_west = .FALSE. !: to active or not the West open boundary 68 INTEGER & 57 LOGICAL, PARAMETER :: lp_obc_west = .FALSE. !: to active or not the West open boundary 58 INTEGER & 69 59 #if !defined key_agrif 70 60 , PARAMETER & … … 78 68 79 69 !! * NORTH open boundary 80 LOGICAL, PARAMETER :: & !: 81 lp_obc_north = .FALSE. !: to active or not the North open boundary 70 LOGICAL, PARAMETER :: lp_obc_north = .FALSE. !: to active or not the North open boundary 82 71 INTEGER & 83 72 #if !defined key_agrif … … 92 81 93 82 !! * SOUTH open boundary 94 LOGICAL, PARAMETER :: & !: 95 lp_obc_south = .FALSE. !: to active or not the South open boundary 83 LOGICAL, PARAMETER :: lp_obc_south = .FALSE. !: to active or not the South open boundary 96 84 INTEGER & 97 85 #if !defined key_agrif … … 105 93 jpisfm1 = jpisf-1 !: last ocean point " " 106 94 107 INTEGER, PARAMETER :: & !: 108 jpnic = 2700 !: maximum number of isolated coastlines points 95 INTEGER, PARAMETER :: jpnic = 2700 !: maximum number of isolated coastlines points 109 96 110 97 # endif … … 117 104 #endif 118 105 106 !!---------------------------------------------------------------------- 107 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 108 !! $Id$ 109 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 119 110 !!====================================================================== 120 111 END MODULE obc_par -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC/obcdta.F90
r2627 r2647 4 4 !! Open boundary data : read the data for the open boundaries. 5 5 !!============================================================================== 6 !! History : OPA ! 1998-05 (J.M. Molines) Original code 7 !! 8.5 ! 2002-10 (C. Talandier, A-M. Treguier) Free surface, F90 8 !! NEMO 1.0 ! 2004-06 (F. Durand, A-M. Treguier) Netcdf BC files on input 9 !! 3.0 ! 2007-2008 (C. Langlais, P. Mathiot, J.M. Molines) high frequency boundaries data 10 !!------------------------------------------------------------------------------ 6 11 #if defined key_obc 7 12 !!------------------------------------------------------------------------------ … … 25 30 PRIVATE 26 31 27 PUBLIC obc_dta ! routines called by step.F90 28 PUBLIC obc_dta_bt ! routines called by dynspg_ts.F90 29 PUBLIC obc_dta_alloc 30 32 PUBLIC obc_dta ! routine called by step.F90 33 PUBLIC obc_dta_bt ! routine called by dynspg_ts.F90 34 PUBLIC obc_dta_alloc ! function called by obcini.F90 31 35 32 36 REAL(wp), DIMENSION(2) :: zjcnes_obc ! … … 47 51 CHARACTER (len=40) :: cl_obc_sTS, cl_obc_sV ! - - 48 52 49 # if defined key_dynspg_ts50 53 ! bt arrays for interpolating time dependent data on the boundaries 51 54 INTEGER :: nt_m=0, ntobc_m 52 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtedta, vbtedta, sshedta 53 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtwdta, vbtwdta, sshwdta ! West54 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtndta, vbtndta, sshndta ! North55 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtsdta, vbtsdta, sshsdta ! South55 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtedta, vbtedta, sshedta ! East 56 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtwdta, vbtwdta, sshwdta ! West 57 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtndta, vbtndta, sshndta ! North 58 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtsdta, vbtsdta, sshsdta ! South 56 59 ! arrays used for interpolating time dependent data on the boundaries 57 60 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: uedta, vedta, tedta, sedta ! East … … 59 62 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: undta, vndta, tndta, sndta ! North 60 63 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: usdta, vsdta, tsdta, ssdta ! South 61 # else 62 ! bt arrays for interpolating time dependent data on the boundaries 63 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtedta, vbtedta, sshedta ! East 64 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtwdta, vbtwdta, sshwdta ! West 65 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtndta, vbtndta, sshndta ! North 66 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ubtsdta, vbtsdta, sshsdta ! South 67 ! arrays used for interpolating time dependent data on the boundaries 68 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: uedta, vedta, tedta, sedta ! East 69 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: uwdta, vwdta, twdta, swdta ! West 70 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: undta, vndta, tndta, sndta ! North 71 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: usdta, vsdta, tsdta, ssdta ! South 72 # endif 64 73 65 ! Masks set to .TRUE. after successful allocation below 74 66 LOGICAL , ALLOCATABLE, SAVE, DIMENSION(:,:) :: ltemsk, luemsk, lvemsk ! boolean msks … … 87 79 CONTAINS 88 80 89 FUNCTION obc_dta_alloc()81 INTEGER FUNCTION obc_dta_alloc() 90 82 !!------------------------------------------------------------------- 91 83 !! *** ROUTINE obc_dta_alloc *** 92 !!93 84 !!------------------------------------------------------------------- 94 IMPLICIT none95 INTEGER :: obc_dta_alloc96 85 INTEGER :: ierr(2) 97 86 !!------------------------------------------------------------------- 98 99 87 # if defined key_dynspg_ts 100 ALLOCATE( ubtedta(jpj,0:jptobc), vbtedta(jpj,0:jptobc), &101 sshedta(jpj,0:jptobc), ubtwdta(jpj,0:jptobc), &102 vbtwdta(jpj,0:jptobc), sshwdta(jpj,0:jptobc),&103 ubtndta(jpi,0:jptobc), vbtndta(jpi,0:jptobc),&104 sshndta(jpi,0:jptobc), ubtsdta(jpi,0:jptobc),&105 vbtsdta(jpi,0:jptobc), sshsdta(jpi,0:jptobc),&106 107 uedta(jpj,jpk,0:jptobc), vedta(jpj,jpk,0:jptobc),&108 tedta(jpj,jpk,0:jptobc), sedta(jpj,jpk,0:jptobc),&109 uwdta(jpj,jpk,0:jptobc), vwdta(jpj,jpk,0:jptobc),&110 twdta(jpj,jpk,0:jptobc), swdta(jpj,jpk,0:jptobc),&111 undta(jpi,jpk,0:jptobc), vndta(jpi,jpk,0:jptobc),&112 tndta(jpi,jpk,0:jptobc), sndta(jpi,jpk,0:jptobc),&113 usdta(jpi,jpk,0:jptobc), vsdta(jpi,jpk,0:jptobc),&114 tsdta(jpi,jpk,0:jptobc), ssdta(jpi,jpk,0:jptobc), Stat=ierr(1) )88 ALLOCATE( & ! time-splitting : 0:jptobc 89 ! bt arrays for interpolating time dependent data on the boundaries 90 & ubtedta (jpj,0:jptobc) , vbtedta (jpj,0:jptobc) , sshedta (jpj,0:jptobc) , & 91 & ubtwdta (jpj,0:jptobc) , vbtwdta (jpj,0:jptobc) , sshwdta (jpj,0:jptobc) , & 92 & ubtndta (jpi,0:jptobc) , vbtndta (jpi,0:jptobc) , sshndta (jpi,0:jptobc) , & 93 & ubtsdta (jpi,0:jptobc) , vbtsdta (jpi,0:jptobc) , sshsdta (jpi,0:jptobc) , & 94 ! arrays used for interpolating time dependent data on the boundaries 95 & uedta(jpj,jpk,0:jptobc) , vedta(jpj,jpk,0:jptobc) , & 96 & tedta(jpj,jpk,0:jptobc) , sedta(jpj,jpk,0:jptobc) , & 97 & uwdta(jpj,jpk,0:jptobc) , vwdta(jpj,jpk,0:jptobc) , & 98 & twdta(jpj,jpk,0:jptobc) , swdta(jpj,jpk,0:jptobc) , & 99 & undta(jpi,jpk,0:jptobc) , vndta(jpi,jpk,0:jptobc) , & 100 & tndta(jpi,jpk,0:jptobc) , sndta(jpi,jpk,0:jptobc) , & 101 & usdta(jpi,jpk,0:jptobc) , vsdta(jpi,jpk,0:jptobc) , & 102 & tsdta(jpi,jpk,0:jptobc) , ssdta(jpi,jpk,0:jptobc) , STAT=ierr(1) ) 115 103 # else 116 ! bt arrays for interpolating time dependent data on the boundaries 117 ALLOCATE(ubtedta(jpj,jptobc), vbtedta(jpj,jptobc), sshedta(jpj,jptobc), & 118 ubtwdta(jpj,jptobc), vbtwdta(jpj,jptobc), sshwdta(jpj,jptobc), & 119 ubtndta(jpi,jptobc), vbtndta(jpi,jptobc), sshndta(jpi,jptobc), & 120 ubtsdta(jpi,jptobc), vbtsdta(jpi,jptobc), sshsdta(jpi,jptobc), & 121 ! arrays used for interpolating time dependent data on the boundaries 122 uedta(jpj,jpk,jptobc), vedta(jpj,jpk,jptobc), & 123 tedta(jpj,jpk,jptobc), sedta(jpj,jpk,jptobc), & 124 uwdta(jpj,jpk,jptobc), vwdta(jpj,jpk,jptobc), & 125 twdta(jpj,jpk,jptobc), swdta(jpj,jpk,jptobc), & 126 undta(jpi,jpk,jptobc), vndta(jpi,jpk,jptobc), & 127 tndta(jpi,jpk,jptobc), sndta(jpi,jpk,jptobc), & 128 usdta(jpi,jpk,jptobc), vsdta(jpi,jpk,jptobc), & 129 tsdta(jpi,jpk,jptobc), ssdta(jpi,jpk,jptobc), Stat=ierr(1) ) 104 ALLOCATE( & ! no time splitting : 1:jptobc 105 ! bt arrays for interpolating time dependent data on the boundaries 106 & ubtedta (jpj,jptobc) , vbtedta (jpj,jptobc) , sshedta (jpj,jptobc) , & 107 & ubtwdta (jpj,jptobc) , vbtwdta (jpj,jptobc) , sshwdta (jpj,jptobc) , & 108 & ubtndta (jpi,jptobc) , vbtndta (jpi,jptobc) , sshndta (jpi,jptobc) , & 109 & ubtsdta (jpi,jptobc) , vbtsdta (jpi,jptobc) , sshsdta (jpi,jptobc) , & 110 ! arrays used for interpolating time dependent data on the boundaries 111 & uedta(jpj,jpk,jptobc) , vedta(jpj,jpk,jptobc) , & 112 & tedta(jpj,jpk,jptobc) , sedta(jpj,jpk,jptobc) , & 113 & uwdta(jpj,jpk,jptobc) , vwdta(jpj,jpk,jptobc) , & 114 & twdta(jpj,jpk,jptobc) , swdta(jpj,jpk,jptobc) , & 115 & undta(jpi,jpk,jptobc) , vndta(jpi,jpk,jptobc) , & 116 & tndta(jpi,jpk,jptobc) , sndta(jpi,jpk,jptobc) , & 117 & usdta(jpi,jpk,jptobc) , vsdta(jpi,jpk,jptobc) , & 118 & tsdta(jpi,jpk,jptobc) , ssdta(jpi,jpk,jptobc) , STAT=ierr(1) ) 130 119 # endif 131 120 132 ALLOCATE(uedta(jpj,jpk,jptobc), vedta(jpj,jpk,jptobc), & 133 tedta(jpj,jpk,jptobc), sedta(jpj,jpk,jptobc), & 134 uwdta(jpj,jpk,jptobc), vwdta(jpj,jpk,jptobc), & 135 twdta(jpj,jpk,jptobc), swdta(jpj,jpk,jptobc), & 136 undta(jpj,jpk,jptobc), vndta(jpj,jpk,jptobc), & 137 tndta(jpj,jpk,jptobc), sndta(jpj,jpk,jptobc), & 138 usdta(jpj,jpk,jptobc), vsdta(jpj,jpk,jptobc), & 139 tsdta(jpj,jpk,jptobc), ssdta(jpj,jpk,jptobc), & 140 ltemsk(jpj,jpk), luemsk(jpj,jpk), lvemsk(jpj,jpk), & 141 ltwmsk(jpj,jpk), luwmsk(jpj,jpk), lvwmsk(jpj,jpk), & 142 ltnmsk(jpj,jpk), lunmsk(jpj,jpk), lvnmsk(jpj,jpk), & 143 ltsmsk(jpj,jpk), lusmsk(jpj,jpk), lvsmsk(jpj,jpk), & 144 Stat=ierr(2)) 145 146 obc_dta_alloc = MAXVAL(ierr) 147 148 IF(obc_dta_alloc == 0)THEN 149 ! Initialise mask values following successful allocation 150 ltemsk(:,:)=.TRUE. 151 luemsk(:,:)=.TRUE. 152 lvemsk(:,:)=.TRUE. 153 ltwmsk(:,:)=.TRUE. 154 luwmsk(:,:)=.TRUE. 155 lvwmsk(:,:)=.TRUE. 156 ltnmsk(:,:)=.TRUE. 157 lunmsk(:,:)=.TRUE. 158 lvnmsk(:,:)=.TRUE. 159 ltsmsk(:,:)=.TRUE. 160 lusmsk(:,:)=.TRUE. 161 lvsmsk(:,:)=.TRUE. 121 ALLOCATE( uedta(jpj,jpk,jptobc) , vedta(jpj,jpk,jptobc) , & 122 & tedta(jpj,jpk,jptobc) , sedta(jpj,jpk,jptobc) , & 123 & uwdta(jpj,jpk,jptobc) , vwdta(jpj,jpk,jptobc) , & 124 & twdta(jpj,jpk,jptobc) , swdta(jpj,jpk,jptobc) , & 125 & undta(jpj,jpk,jptobc) , vndta(jpj,jpk,jptobc) , & 126 & tndta(jpj,jpk,jptobc) , sndta(jpj,jpk,jptobc) , & 127 & usdta(jpj,jpk,jptobc) , vsdta(jpj,jpk,jptobc) , & 128 & tsdta(jpj,jpk,jptobc) , ssdta(jpj,jpk,jptobc) , & 129 & ltemsk(jpj,jpk) , luemsk(jpj,jpk) , lvemsk(jpj,jpk) , & 130 & ltwmsk(jpj,jpk) , luwmsk(jpj,jpk) , lvwmsk(jpj,jpk) , & 131 & ltnmsk(jpj,jpk) , lunmsk(jpj,jpk) , lvnmsk(jpj,jpk) , & 132 & ltsmsk(jpj,jpk) , lusmsk(jpj,jpk) , lvsmsk(jpj,jpk) , STAT=ierr(2) ) 133 134 obc_dta_alloc = MAXVAL( ierr ) 135 IF( lk_mpp ) CALL mpp_sum( obc_dta_alloc ) 136 137 IF( obc_dta_alloc == 0 ) THEN ! Initialise mask values following successful allocation 138 ! east ! west ! north ! south ! 139 ltemsk(:,:) = .TRUE. ; ltwmsk(:,:) = .TRUE. ; ltnmsk(:,:) = .TRUE. ; ltsmsk(:,:) = .TRUE. 140 luemsk(:,:) = .TRUE. ; luwmsk(:,:) = .TRUE. ; lunmsk(:,:) = .TRUE. ; lusmsk(:,:) = .TRUE. 141 lvemsk(:,:) = .TRUE. ; lvwmsk(:,:) = .TRUE. ; lvnmsk(:,:) = .TRUE. ; lvsmsk(:,:) = .TRUE. 162 142 END IF 163 143 ! 164 144 END FUNCTION obc_dta_alloc 165 145 … … 181 161 !! attribute of variable time_counter). 182 162 !! 183 !!184 !! History :185 !! ! 98-05 (J.M. Molines) Original code186 !! 8.5 ! 02-10 (C. Talandier, A-M. Treguier) Free surface, F90187 !!188 !! 9.0 ! 04-06 (F. Durand, A-M. Treguier) Netcdf BC files on input189 !! ! 2007-2008 (C. Langlais, P. Mathiot, J.M. Molines) high frequency boundaries data190 163 !!--------------------------------------------------------------------------- 191 !! * Arguments192 164 INTEGER, INTENT( in ) :: kt ! ocean time-step index 193 194 !! * Local declarations 165 ! 195 166 INTEGER, SAVE :: immfile, iyyfile ! 196 167 INTEGER :: nt ! record indices (incrementation) 197 168 REAL(wp) :: zsec, zxy, znum, zden ! time interpolation weight 198 199 169 !!--------------------------------------------------------------------------- 200 170 … … 302 272 303 273 304 SUBROUTINE obc_dta_ini (kt)274 SUBROUTINE obc_dta_ini( kt ) 305 275 !!----------------------------------------------------------------------------- 306 276 !! *** SUBROUTINE obc_dta_ini *** 307 277 !! 308 !! ** Purpose : 309 !! When obc_dta first call, realize some data initialization 310 !! 311 !! ** Method : 312 !! 313 !! History : 314 !! 9.0 ! 07-10 (J.M. Molines ) 278 !! ** Purpose : When obc_dta first call, realize some data initialization 315 279 !!---------------------------------------------------------------------------- 316 !! * Argument317 280 INTEGER, INTENT(in) :: kt ! ocean time-step index 318 319 !! * Local declarations 281 ! 320 282 INTEGER :: ji, jj ! dummy loop indices 321 283 INTEGER, SAVE :: immfile, iyyfile ! … … 596 558 !! Data at the boundary must be in m2/s 597 559 !! 598 !! History : 599 !! 9.0 ! 05-11 (V. garnier) Original code 560 !! History : 9.0 ! 05-11 (V. garnier) Original code 600 561 !!--------------------------------------------------------------------------- 601 !! * Arguments602 562 INTEGER, INTENT( in ) :: kt ! ocean time-step index 603 563 INTEGER, INTENT( in ) :: kbt ! barotropic ocean time-step index 604 605 !! * Local declarations 564 ! 606 565 INTEGER :: ji, jj ! dummy loop indices 607 566 INTEGER :: i15 … … 609 568 REAL(wp) :: zxy 610 569 INTEGER :: isrel ! number of seconds since 1/1/1992 611 612 570 !!--------------------------------------------------------------------------- 613 571 … … 1171 1129 END SUBROUTINE obc_read 1172 1130 1131 1173 1132 INTEGER FUNCTION nrecbef() 1174 1133 !!----------------------------------------------------------------------- … … 1202 1161 END FUNCTION nrecbef 1203 1162 1204 !!============================================================================== 1163 1205 1164 SUBROUTINE obc_depth_average(nt_x) 1206 1165 !!----------------------------------------------------------------------- … … 1287 1246 END SUBROUTINE obc_dta 1288 1247 #endif 1248 !!============================================================================== 1289 1249 END MODULE obcdta -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/OBC/obcini.F90
r2565 r2647 18 18 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 19 19 USE phycst ! physical constants 20 USE obc_oce ! o cean open boundary conditions21 USE lib_mpp ! for mpp_sum20 USE obc_oce ! open boundary condition: ocean 21 USE obcdta ! open boundary condition: data 22 22 USE in_out_manager ! I/O units 23 USE lib_mpp ! MPP library 23 24 USE dynspg_oce ! flag lk_dynspg_flt 24 25 … … 33 34 !! NEMO/OPA 3.3 , NEMO Consortium (2010) 34 35 !! $Id$ 35 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)36 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 36 37 !!---------------------------------------------------------------------- 37 38 38 CONTAINS 39 39 … … 81 81 rdpnob = rn_dpnob 82 82 volemp = rn_volemp 83 84 83 84 ! ! allocate obc arrays 85 IF( obc_oce_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'obc_init : unable to allocate obc_oce arrays' ) 86 IF( obc_dta_alloc() /= 0 ) CALL ctl_stop( 'STOP', 'obc_init : unable to allocate obc_dta arrays' ) 85 87 86 88 ! By security we set rdpxin and rdpxob respectively to 1. and 15. if the corresponding OBC is not activated -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/nemogcm.F90
r2641 r2647 470 470 USE trc_oce, ONLY: trc_oce_alloc 471 471 472 #if defined key_obc473 USE obcdta , ONLY: obc_dta_alloc474 USE obc_oce, ONLY: obc_oce_alloc475 #endif476 477 472 USE wrk_nemo, ONLY: wrk_alloc 478 473 … … 491 486 ierr = ierr + trc_oce_alloc () ! shared TRC / TRA arrays 492 487 493 494 #if defined key_obc 495 ierr = ierr + obc_dta_alloc() 496 ierr = ierr + obc_oce_alloc() 497 #endif 498 499 ierr = ierr + wrk_alloc(numout, lwp) 488 ierr = ierr + wrk_alloc(numout, lwp) ! workspace 500 489 501 490 IF( lk_mpp ) CALL mpp_sum( ierr )
Note: See TracChangeset
for help on using the changeset viewer.