Changeset 78 for trunk/NEMO
- Timestamp:
- 2004-04-22T14:54:25+02:00 (20 years ago)
- Location:
- trunk/NEMO/OPA_SRC
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/divcur.F90
r3 r78 123 123 ! open boundaries (div must be zero behind the open boundary) 124 124 ! mpp remark: The zeroing of hdivn can probably be extended to 1->jpi/jpj for the correct row/column 125 IF( lp eastobc) hdivn(nie0p1:nie1p1,nje0 :nje1 ,jk) = 0.e0 ! east126 IF( lp westobc) hdivn(niw0 :niw1 ,njw0 :njw1 ,jk) = 0.e0 ! west127 IF( lp northobc) hdivn(nin0 :nin1 ,njn0p1:njn1p1,jk) = 0.e0 ! north128 IF( lp southobc) hdivn(nis0 :nis1 ,njs0 :njs1 ,jk) = 0.e0 ! south125 IF( lp_obc_east ) hdivn(nie0p1:nie1p1,nje0 :nje1 ,jk) = 0.e0 ! east 126 IF( lp_obc_west ) hdivn(niw0 :niw1 ,njw0 :njw1 ,jk) = 0.e0 ! west 127 IF( lp_obc_north ) hdivn(nin0 :nin1 ,njn0p1:njn1p1,jk) = 0.e0 ! north 128 IF( lp_obc_south ) hdivn(nis0 :nis1 ,njs0 :njs1 ,jk) = 0.e0 ! south 129 129 #endif 130 130 … … 319 319 ! open boundaries (div must be zero behind the open boundary) 320 320 ! mpp remark: The zeroing of hdivn can probably be extended to 1->jpi/jpj for the correct row/column 321 IF( lp eastobc) hdivn(nie0p1:nie1p1,nje0 :nje1 ,jk) = 0.e0 ! east322 IF( lp westobc) hdivn(niw0 :niw1 ,njw0 :njw1 ,jk) = 0.e0 ! west323 IF( lp northobc) hdivn(nin0 :nin1 ,njn0p1:njn1p1,jk) = 0.e0 ! north324 IF( lp southobc) hdivn(nis0 :nis1 ,njs0 :njs1 ,jk) = 0.e0 ! south321 IF( lp_obc_east ) hdivn(nie0p1:nie1p1,nje0 :nje1 ,jk) = 0.e0 ! east 322 IF( lp_obc_west ) hdivn(niw0 :niw1 ,njw0 :njw1 ,jk) = 0.e0 ! west 323 IF( lp_obc_north ) hdivn(nin0 :nin1 ,njn0p1:njn1p1,jk) = 0.e0 ! north 324 IF( lp_obc_south ) hdivn(nis0 :nis1 ,njs0 :njs1 ,jk) = 0.e0 ! south 325 325 #endif 326 326 ! ! -------- -
trunk/NEMO/OPA_SRC/DYN/dynspg_rl.F90
r31 r78 69 69 !! gradient or a successive-over-relaxation method (depending 70 70 !! on nsolv, a namelist parameter). 71 !! -3- add to bsfd the island trends if l _isl=T71 !! -3- add to bsfd the island trends if lk_isl=T 72 72 !! -4- compute the after streamfunction is for further diagnos- 73 73 !! tics using a leap-frog scheme. … … 247 247 ! ----------------------------------- 248 248 249 IF( l _isl ) CALL isl_dyn_spg ! update bsfd249 IF( lk_isl ) CALL isl_dyn_spg ! update bsfd 250 250 251 251 … … 253 253 ! Compute bsf trend for OBC points (not masked) 254 254 255 IF( lp eastobc) THEN255 IF( lp_obc_east ) THEN 256 256 ! compute bsf trend at the boundary from bsfeob, computed in obc_spg 257 257 IF( neuler == 0 .AND. kt == nit000 ) THEN … … 268 268 ENDIF 269 269 270 IF( lp westobc) THEN270 IF( lp_obc_west ) THEN 271 271 ! compute bsf trend at the boundary from bsfwob, computed in obc_spg 272 272 IF( neuler == 0 .AND. kt == nit000 ) THEN … … 283 283 ENDIF 284 284 285 IF( lp northobc) THEN285 IF( lp_obc_north ) THEN 286 286 ! compute bsf trend at the boundary from bsfnob, computed in obc_spg 287 287 IF( neuler == 0 .AND. kt == nit000 ) THEN … … 298 298 ENDIF 299 299 300 IF( lp southobc) THEN300 IF( lp_obc_south ) THEN 301 301 ! compute bsf trend at the boundary from bsfsob, computed in obc_spg 302 302 IF( neuler == 0 .AND. kt == nit000 ) THEN … … 366 366 # if defined key_obc 367 367 ! Swap of boundary arrays 368 IF( lp eastobc) THEN368 IF( lp_obc_east ) THEN 369 369 ! (jped,jpef),nieob 370 370 IF( kt < nit000+3 .AND. .NOT.ln_rstart ) THEN … … 400 400 ENDIF 401 401 402 IF( lp westobc) THEN402 IF( lp_obc_west ) THEN 403 403 ! (jpwd,jpwf),niwob 404 404 IF( kt < nit000+3 .AND. .NOT.ln_rstart ) THEN … … 434 434 ENDIF 435 435 436 IF( lp northobc) THEN436 IF( lp_obc_north ) THEN 437 437 ! njnob,(jpnd,jpnf) 438 438 IF( kt < nit000 + 3 .AND. .NOT.ln_rstart ) THEN … … 468 468 ENDIF 469 469 470 IF( lp southobc) THEN470 IF( lp_obc_south ) THEN 471 471 ! njsob,(jpsd,jpsf) 472 472 IF( kt < nit000+3 .AND. .NOT.ln_rstart ) THEN -
trunk/NEMO/OPA_SRC/OBC/obc_par.F90
r32 r78 32 32 !! * EAST open boundary 33 33 LOGICAL, PARAMETER :: & !: 34 lp eastobc = .FALSE.!: to active or not the East open boundary34 lp_obc_east = .FALSE. !: to active or not the East open boundary 35 35 INTEGER, PARAMETER :: & !: 36 36 jpieob = jpiglo-2, & !: i-localization of the East open boundary (must be ocean U-point) … … 42 42 !! * WEST open boundary 43 43 LOGICAL, PARAMETER :: & !: 44 lp westobc = .FALSE.!: to active or not the West open boundary44 lp_obc_west = .FALSE. !: to active or not the West open boundary 45 45 INTEGER, PARAMETER :: & !: 46 46 jpiwob = 2, & !: i-localization of the West open boundary (must be ocean U-point) … … 52 52 !! * NORTH open boundary 53 53 LOGICAL, PARAMETER :: & !: 54 lp northobc = .FALSE.!: to active or not the North open boundary54 lp_obc_north = .FALSE. !: to active or not the North open boundary 55 55 INTEGER, PARAMETER :: & !: 56 56 jpjnob = jpjglo-2, & !: j-localization of the North open boundary (must be ocean V-point) … … 62 62 !! * SOUTH open boundary 63 63 LOGICAL, PARAMETER :: & !: 64 lp southobc = .FALSE.!: to active or not the South open boundary64 lp_obc_south = .FALSE. !: to active or not the South open boundary 65 65 INTEGER, PARAMETER :: & !: 66 66 jpjsob = 2, & !: j-localization of the South open boundary (must be ocean V-point) -
trunk/NEMO/OPA_SRC/OBC/obc_par_EEL_R5.h90
r3 r78 5 5 !!--------------------------------------------------------------------- 6 6 !! * EAST open boundary 7 LOGICAL, PARAMETER :: & 8 lp eastobc = .TRUE. !to active or not the East open boundary9 INTEGER, PARAMETER :: & 10 jpieob = jpiglo-2, & ! i-localization of the East open boundary (must be ocean U-point)11 jpjed = 2, & ! j-starting indice of the East open boundary (must be land T-point)12 jpjef = jpjglo-1, & ! j-ending indice of the East open boundary (must be land T-point)13 jpjedp1 = jpjed+1, & ! first ocean point " "14 jpjefm1 = jpjef-1 ! last ocean point " "7 LOGICAL, PARAMETER :: & !: 8 lp_obc_east = .TRUE. !: to active or not the East open boundary 9 INTEGER, PARAMETER :: & !: 10 jpieob = jpiglo-2, & !: i-localization of the East open boundary (must be ocean U-point) 11 jpjed = 2, & !: j-starting indice of the East open boundary (must be land T-point) 12 jpjef = jpjglo-1, & !: j-ending indice of the East open boundary (must be land T-point) 13 jpjedp1 = jpjed+1, & !: first ocean point " " 14 jpjefm1 = jpjef-1 !: last ocean point " " 15 15 16 16 !! * WEST open boundary 17 LOGICAL, PARAMETER :: & 18 lp westobc = .TRUE. !to active or not the West open boundary17 LOGICAL, PARAMETER :: & !: 18 lp_obc_west = .TRUE. !: to active or not the West open boundary 19 19 INTEGER, PARAMETER :: & 20 jpiwob = 2, & ! i-localization of the West open boundary (must be ocean U-point)21 jpjwd = 2, & ! j-starting indice of the West open boundary (must be land T-point)22 jpjwf = jpjglo-1, & ! j-ending indice of the West open boundary (must be land T-point)23 jpjwdp1 = jpjwd+1, & ! first ocean point " "24 jpjwfm1 = jpjwf-1 ! last ocean point " "20 jpiwob = 2, & !: i-localization of the West open boundary (must be ocean U-point) 21 jpjwd = 2, & !: j-starting indice of the West open boundary (must be land T-point) 22 jpjwf = jpjglo-1, & !: j-ending indice of the West open boundary (must be land T-point) 23 jpjwdp1 = jpjwd+1, & !: first ocean point " " 24 jpjwfm1 = jpjwf-1 !: last ocean point " " 25 25 26 26 !! * NORTH open boundary 27 LOGICAL, PARAMETER :: &28 lp northobc = .FALSE. !to active or not the North open boundary29 INTEGER, PARAMETER :: & 30 jpjnob = jpjglo-2, & ! j-localization of the North open boundary (must be ocean V-point)31 jpind = 2, & ! i-starting indice of the North open boundary (must be land T-point)32 jpinf = jpiglo-1, & ! i-ending indice of the North open boundary (must be land T-point)33 jpindp1 = jpind+1, & ! first ocean point " "34 jpinfm1 = jpinf-1 ! last ocean point " "27 LOGICAL, PARAMETER :: & !: 28 lp_obc_north = .FALSE. !: to active or not the North open boundary 29 INTEGER, PARAMETER :: & !: 30 jpjnob = jpjglo-2, & !: j-localization of the North open boundary (must be ocean V-point) 31 jpind = 2, & !: i-starting indice of the North open boundary (must be land T-point) 32 jpinf = jpiglo-1, & !: i-ending indice of the North open boundary (must be land T-point) 33 jpindp1 = jpind+1, & !: first ocean point " " 34 jpinfm1 = jpinf-1 !: last ocean point " " 35 35 36 36 !! * SOUTH open boundary 37 LOGICAL, PARAMETER :: & 38 lp southobc = .FALSE. !to active or not the South open boundary39 INTEGER, PARAMETER :: & 40 jpjsob = 2, & ! j-localization of the South open boundary (must be ocean V-point)41 jpisd = 2, & ! i-starting indice of the South open boundary (must be land T-point)42 jpisf = jpiglo-1, & ! i-ending indice of the South open boundary (must be land T-point)43 jpisdp1 = jpisd+1, & ! first ocean point " "44 jpisfm1 = jpisf-1 ! last ocean point " "37 LOGICAL, PARAMETER :: & !: 38 lp_obc_south = .FALSE. !: to active or not the South open boundary 39 INTEGER, PARAMETER :: & !: 40 jpjsob = 2, & !: j-localization of the South open boundary (must be ocean V-point) 41 jpisd = 2, & !: i-starting indice of the South open boundary (must be land T-point) 42 jpisf = jpiglo-1, & !: i-ending indice of the South open boundary (must be land T-point) 43 jpisdp1 = jpisd+1, & !: first ocean point " " 44 jpisfm1 = jpisf-1 !: last ocean point " " 45 45 46 INTEGER, PARAMETER :: & 47 jpnic = 2700 ! maximum number of isolated coastlines points46 INTEGER, PARAMETER :: & !: 47 jpnic = 2700 !: maximum number of isolated coastlines points 48 48 !!--------------------------------------------------------------------------------------------- -
trunk/NEMO/OPA_SRC/OBC/obcdom.F90
r32 r78 6 6 !! the open boundaries. 7 7 !!================================================================================= 8 #if defined key_obc && ! defined key_dynspg_fsc 8 #if defined key_obc && defined key_dynspg_rl 9 !!--------------------------------------------------------------------------------- 10 !! 'key_obc' AND Open Boundary Condition 11 !! 'key_dynspg_rl' Rigid-Lid formulation 12 !!--------------------------------------------------------------------------------- 13 !! obc_dom : domain initialization in rid-lid formulation 9 14 !!--------------------------------------------------------------------------------- 10 15 !! * Modules used … … 72 77 !! 73 78 !! History : 74 !! ! 07-97 (G. Madec) Original code 75 !! ! 09-97 (J.M. Molines) for debuging 76 !! ! 06-99 (J.M. Molines) suppress zwb(,) for ATL6 (memory saving) 77 !! ! 02-02 (A.M. Treguier) icoast in 2 dimension 79 !! 8.1 ! 09-97 (J.M. Molines, G. Madec) Original code 80 !! 8.2 ! 06-99 (J.M. Molines) suppress zwb(,) for ATL6 (memory saving) 81 !! ! 02-02 (A.M. Treguier) icoast in 2 dimension 78 82 !! 8.5 ! 02-08 (G. Madec) F90 : free form 79 83 !!---------------------------------------------------------------------- … … 196 200 197 201 ! east open boundary 198 IF( lp eastobc.AND. ( jpieob /= 0 ) ) THEN202 IF( lp_obc_east .AND. ( jpieob /= 0 ) ) THEN 199 203 IF(lwp) WRITE(numout,*) ' East open boundary: from coastline S.E : ', & 200 204 INT(zglo(jpieob,jpjed)),' to N.E : ', & … … 202 206 END IF 203 207 ! west open boundary 204 IF( lp westobc.AND. ( jpiwob /= 0 ) ) THEN208 IF( lp_obc_west .AND. ( jpiwob /= 0 ) ) THEN 205 209 IF(lwp) WRITE(numout,*) ' West open boundary: from coastline S.W : ', & 206 210 INT(zglo(jpiwob,jpjwd)),' to N.W : ', & … … 208 212 END IF 209 213 ! north open boundary 210 IF( lp northobc.AND. ( jpjnob /= 0 ) ) THEN214 IF( lp_obc_north .AND. ( jpjnob /= 0 ) ) THEN 211 215 IF(lwp) WRITE(numout,*) ' North open boundary: from coastline N.W : ', & 212 216 INT(zglo(jpind,jpjnob)),' to N.E : ', & … … 214 218 END IF 215 219 ! south open boundary 216 IF( lp southobc.AND. ( jpjsob /= 0 ) ) THEN220 IF( lp_obc_south .AND. ( jpjsob /= 0 ) ) THEN 217 221 IF(lwp) WRITE(numout,*) ' South open boundary: from coastline S.W : ', & 218 222 INT(zglo(jpisd,jpjsob)),' to S.E : ', & -
trunk/NEMO/OPA_SRC/OBC/obcdta.F90
r35 r78 110 110 ! 1.1 Tangential velocities set to zero 111 111 ! -------------------------------------- 112 IF( lpeastobc ) THEN 113 DO jk=1, jpkm1 114 vfoe(:,jk)=0.00 115 END DO 116 END IF 117 118 IF( lpwestobc ) THEN 119 DO jk=1, jpkm1 120 vfow(:,jk)=0.00 121 END DO 122 END IF 123 124 IF( lpsouthobc ) THEN 125 DO jk=1, jpkm1 126 ufos(:,jk)=0.00 127 END DO 128 END IF 129 130 IF( lpnorthobc ) THEN 131 DO jk=1, jpkm1 132 ufon(:,jk)=0.00 133 END DO 134 END IF 112 IF( lp_obc_east ) vfoe(:,1:jpkm1) = 0.e0 113 IF( lp_obc_west ) vfow(:,1:jpkm1) = 0.e0 114 IF( lp_obc_south ) ufos(:,1:jpkm1) = 0.e0 115 IF( lp_obc_north ) ufon(:,1:jpkm1) = 0.e0 135 116 136 117 ! 1.2 Set the Normal velocity and tracers data for the EAST OBC 137 118 ! ------------------------------------------------------------- 138 119 139 IF( lp eastobc) THEN120 IF( lp_obc_east ) THEN 140 121 141 122 ! initialisation to zero … … 234 215 ! ------------------------------------------------------------- 235 216 236 IF( lp westobc) THEN217 IF( lp_obc_west ) THEN 237 218 238 219 ! initialisation to zero … … 328 309 ! --------------------------------------------------------------- 329 310 330 IF( lp northobc) THEN311 IF( lp_obc_north ) THEN 331 312 332 313 ! initialisation to zero … … 400 381 ! --------------------------------------------------------------- 401 382 402 IF( lp southobc) THEN383 IF( lp_obc_south ) THEN 403 384 404 385 ! initialisation to zero … … 476 457 ! ---------------------------------------------------------------------- 477 458 478 IF( lp eastobc) THEN459 IF( lp_obc_east ) THEN 479 460 DO jk = 1, jpkm1 480 461 DO jj = 1, jpj … … 487 468 END IF 488 469 489 IF( lp westobc) THEN470 IF( lp_obc_west ) THEN 490 471 DO jk = 1, jpkm1 491 472 DO jj = 1, jpj … … 498 479 END IF 499 480 500 IF( lp northobc) THEN481 IF( lp_obc_north ) THEN 501 482 DO jk = 1, jpkm1 502 483 DO ji = 1, jpi … … 509 490 END IF 510 491 511 IF( lp southobc) THEN492 IF( lp_obc_south ) THEN 512 493 DO jk = 1, jpkm1 513 494 DO ji = 1, jpi … … 585 566 zcoef = float(kt)/float(kbsfstart) 586 567 ELSE 587 zcoef = 1. 568 zcoef = 1.e0 588 569 END IF 589 570 bsfic(1) = zsver1*zcoef … … 612 593 IF( nbobc > 1 ) THEN 613 594 DO jnic = 1,nbobc - 1 614 gcbic(jnic) = 0. 595 gcbic(jnic) = 0.e0 615 596 ip=mnic(0,jnic) 616 597 DO jip = 1,ip … … 632 613 ! ---------------------------------------------------------------- 633 614 634 IF( lp eastobc) THEN615 IF( lp_obc_east ) THEN 635 616 636 617 IF( kt == nit000 .OR. kt <= kbsfstart ) THEN … … 650 631 END IF 651 632 652 IF( lp westobc) THEN633 IF( lp_obc_west ) THEN 653 634 654 635 IF( kt == nit000 .OR. kt <= kbsfstart ) then … … 663 644 END IF 664 645 DO jj=jpjwd, jpjwfm1 665 bfow(jj) =bfow(jj)*zcoef666 END DO 667 668 END IF 669 670 IF( lp southobc) THEN671 672 IF( kt == nit000 .OR.kt <= kbsfstart ) THEN646 bfow(jj) = bfow(jj) * zcoef 647 END DO 648 649 END IF 650 651 IF( lp_obc_south ) THEN 652 653 IF( kt == nit000 .OR. kt <= kbsfstart ) THEN 673 654 OPEN(inum,file='obcsouthbsf.dta') 674 655 READ(inum,*) … … 686 667 END IF 687 668 688 IF( lp northobc) THEN689 IF( kt == nit000 .OR.kt <= kbsfstart ) THEN669 IF( lp_obc_north ) THEN 670 IF( kt == nit000 .OR. kt <= kbsfstart ) THEN 690 671 OPEN(inum,file='obcnorthbsf.dta') 691 672 READ(inum,*) -
trunk/NEMO/OPA_SRC/OBC/obcdyn.F90
r32 r78 63 63 !! this routine is called in dynnxt.F routine and updates ua, va. 64 64 !! 65 !! The logical variable lp eastobc, and/or lpwestobc, and/or lpnorthobc,66 !! and/or lp southobcallow the user to determine which boundary is an65 !! The logical variable lp_obc_east, and/or lp_obc_west, and/or lp_obc_north, 66 !! and/or lp_obc_south allow the user to determine which boundary is an 67 67 !! open one (must be done in the param_obc.h90 file). 68 68 !! … … 98 98 END IF 99 99 100 ! 1. East open boundary 101 ! --------------------- 102 103 IF( lpeastobc )THEN 104 CALL obc_dyn_east( kt ) 105 END IF 106 107 ! 2. West open boundary 108 ! --------------------- 109 110 IF( lpwestobc )THEN 111 CALL obc_dyn_west( kt ) 112 END IF 113 114 ! 3. North open boundary 115 ! ---------------------- 116 117 IF( lpnorthobc )THEN 118 CALL obc_dyn_north( kt ) 119 END IF 120 121 ! 4. South open boundary 122 ! ---------------------- 123 124 IF( lpsouthobc )THEN 125 CALL obc_dyn_south( kt ) 126 END IF 100 IF( lp_obc_east ) CALL obc_dyn_east ( kt ) 101 IF( lp_obc_west ) CALL obc_dyn_west ( kt ) 102 IF( lp_obc_north ) CALL obc_dyn_north( kt ) 103 IF( lp_obc_south ) CALL obc_dyn_south( kt ) 127 104 128 105 IF( lk_mpp ) THEN … … 299 276 END SUBROUTINE obc_dyn_east 300 277 278 301 279 SUBROUTINE obc_dyn_west ( kt ) 302 280 !!------------------------------------------------------------------------------ 303 !! SUBROUTINE obc_dyn_west304 !! *************************281 !! *** SUBROUTINE obc_dyn_west *** 282 !! 305 283 !! ** Purpose : 306 284 !! Apply the radiation algorithm on west OBC velocities ua, va using the … … 320 298 !! * Local declaration 321 299 REAL(wp) :: z05cx, ztau, zin 322 323 !!------------------------------------------------------------------------------324 !! OPA 8.5, LODYC-IPSL (2002)325 300 !!------------------------------------------------------------------------------ 326 301 -
trunk/NEMO/OPA_SRC/OBC/obcini.F90
r25 r78 7 7 !!--------------------------------------------------------------------------------- 8 8 !! 'key_obc' Open Boundary Conditions 9 !!--------------------------------------------------------------------------------- 10 !! obc_init : initialization for the open boundary condition 9 11 !!--------------------------------------------------------------------------------- 10 12 !! * Modules used … … 90 92 ! By security we set rdpxin and rdpxob respectively 91 93 ! to 1. and 15. if the corresponding OBC is not activated 92 IF( .NOT. lpeastobc) THEN94 IF( .NOT.lp_obc_east ) THEN 93 95 rdpein = 1. 94 96 rdpeob = 15. 95 97 END IF 96 IF( .NOT. lpwestobc) THEN98 IF( .NOT.lp_obc_west ) THEN 97 99 rdpwin = 1. 98 100 rdpwob = 15. 99 101 END IF 100 IF( .NOT. lpnorthobc) THEN102 IF( .NOT.lp_obc_north ) THEN 101 103 rdpnin = 1. 102 104 rdpnob = 15. 103 105 END IF 104 IF( .NOT. lpsouthobc) THEN106 IF( .NOT.lp_obc_south ) THEN 105 107 rdpsin = 1. 106 108 rdpsob = 15. … … 109 111 ! number of open boudaries and open boundary indicators 110 112 nbobc = 0 111 IF( lpeastobc ) THEN 112 nbobc=nbobc+1 113 END IF 114 IF( lpwestobc ) THEN 115 nbobc=nbobc+1 116 END IF 117 IF( lpnorthobc ) THEN 118 nbobc=nbobc+1 119 END IF 120 IF( lpsouthobc ) THEN 121 nbobc=nbobc+1 122 END IF 113 IF( lp_obc_east ) nbobc = nbobc + 1 114 IF( lp_obc_west ) nbobc = nbobc + 1 115 IF( lp_obc_north ) nbobc = nbobc + 1 116 IF( lp_obc_south ) nbobc = nbobc + 1 123 117 124 118 IF(lwp) WRITE(numout,*) ' Number of open boundaries nbobc = ',nbobc … … 138 132 IF(lwp) WRITE(numout,*) ' data in file (=1) or nobc_dta = ', nobc_dta 139 133 IF(lwp) WRITE(numout,*) ' initial state used (=0) ' 140 IF( lwp.AND.lp eastobc) THEN134 IF( lwp.AND.lp_obc_east ) THEN 141 135 WRITE(numout,*) ' East open boundary :' 142 136 WRITE(numout,*) ' i index jpieob = ', jpieob 143 137 WRITE(numout,*) ' damping time scale (days) rdpeob = ', rdpeob 144 138 WRITE(numout,*) ' damping time scale (days) rdpein = ', rdpein 145 END 146 147 IF( lwp.AND.lp westobc) THEN139 ENDIF 140 141 IF( lwp.AND.lp_obc_west ) THEN 148 142 WRITE(numout,*) ' West open boundary :' 149 143 WRITE(numout,*) ' i index jpiwob = ', jpiwob 150 144 WRITE(numout,*) ' damping time scale (days) rdpwob = ', rdpwob 151 145 WRITE(numout,*) ' damping time scale (days) rdpwin = ', rdpwin 152 END 153 154 IF( lwp.AND.lp northobc) THEN146 ENDIF 147 148 IF( lwp.AND.lp_obc_north ) THEN 155 149 WRITE(numout,*) ' North open boundary :' 156 150 WRITE(numout,*) ' j index jpjnob = ', jpjnob 157 151 WRITE(numout,*) ' damping time scale (days) rdpnob = ', rdpnob 158 152 WRITE(numout,*) ' damping time scale (days) rdpnin = ', rdpnin 159 END 160 161 IF( lwp.AND.lp southobc) THEN153 ENDIF 154 155 IF( lwp.AND.lp_obc_south ) THEN 162 156 WRITE(numout,*) ' South open boundary :' 163 157 WRITE(numout,*) ' j index jpjsob = ', jpjsob … … 165 159 WRITE(numout,*) ' damping time scale (days) rdpsin = ', rdpsin 166 160 WRITE(numout,*) ' ' 167 END 161 ENDIF 168 162 169 163 ! 1. Initialisation of constants … … 187 181 ! ... a small arbitrary value, (to avoid division by zero further on). 188 182 ! ... rdpxxx is not used anymore. 189 IF( lp eastobc.AND. ( rdpein == 0 .AND. rdpeob == 0 ) ) THEN183 IF( lp_obc_east .AND. ( rdpein == 0 .AND. rdpeob == 0 ) ) THEN 190 184 lfbceast = .TRUE. 191 185 rdpein = 1e-3 192 186 rdpeob = 1e-3 193 187 END IF 194 IF( lp westobc.AND. ( rdpwin == 0 .AND. rdpwob == 0 ) ) THEN188 IF( lp_obc_west .AND. ( rdpwin == 0 .AND. rdpwob == 0 ) ) THEN 195 189 lfbcwest = .TRUE. 196 190 rdpwin = 1e-3 197 191 rdpwob = 1e-3 198 192 END IF 199 IF( lp northobc.AND. ( rdpnin == 0 .AND. rdpnob == 0 ) ) THEN193 IF( lp_obc_north .AND. ( rdpnin == 0 .AND. rdpnob == 0 ) ) THEN 200 194 lfbcnorth = .TRUE. 201 195 rdpnin = 1e-3 202 196 rdpnob = 1e-3 203 197 END IF 204 IF( lp southobc.AND. ( rdpsin == 0 .AND. rdpsob == 0 ) ) THEN198 IF( lp_obc_south .AND. ( rdpsin == 0 .AND. rdpsob == 0 ) ) THEN 205 199 lfbcsouth = .TRUE. 206 200 rdpsin = 1e-3 … … 213 207 ! -------------------------------------------------------- 214 208 215 IF( lp eastobc) THEN209 IF( lp_obc_east ) THEN 216 210 ! ... mpp initialization 217 211 nie0 = max( 1, min(jpieob - nimpp+1, jpi ) ) … … 238 232 END IF 239 233 240 IF( lp westobc) THEN234 IF( lp_obc_west ) THEN 241 235 ! ... mpp initialization 242 236 niw0 = max( 1, min(jpiwob - nimpp+1, jpi ) ) … … 261 255 END IF 262 256 263 IF( lp northobc) THEN257 IF( lp_obc_north ) THEN 264 258 ! ... mpp initialization 265 259 nin0 = max( 2, min(jpind - nimpp+1, jpi ) ) … … 286 280 END IF 287 281 288 IF( lp southobc) THEN282 IF( lp_obc_south ) THEN 289 283 ! ... mpp initialization 290 284 nis0 = max( 2, min(jpisd - nimpp+1, jpi ) ) … … 312 306 ! --------------------------- 313 307 314 IF( lp eastobc) THEN308 IF( lp_obc_east ) THEN 315 309 !... (jpjed,jpjefm1),jpieob 316 310 DO jj = nje0, nje1m1 … … 340 334 END IF 341 335 342 IF( lp westobc) THEN336 IF( lp_obc_west ) THEN 343 337 ! ... (jpjwd,jpjwfm1),jpiwob 344 338 DO jj = njw0, njw1m1 … … 364 358 END IF 365 359 366 IF( lp northobc) THEN360 IF( lp_obc_north ) THEN 367 361 ! ... jpjnob,(jpind,jpisfm1) 368 362 # if defined key_dynspg_fsc … … 392 386 END IF 393 387 394 IF( lp southobc) THEN388 IF( lp_obc_south ) THEN 395 389 ! ... jpjsob,(jpisd,jpisfm1) 396 390 DO jj = njs0, njs1 … … 432 426 obctmsk(:,jpj) = 0.e0 433 427 434 IF( lp eastobc) THEN428 IF( lp_obc_east ) THEN 435 429 ! ... East obc Force filtering mask for the grad D 436 430 DO ji = nie0, nie1 … … 449 443 END IF 450 444 451 IF( lp westobc) THEN445 IF( lp_obc_west ) THEN 452 446 ! ... West obc Force filtering mask for the grad D 453 447 DO ji = niw0, niw1 … … 466 460 END IF 467 461 468 IF( lp northobc) THEN462 IF( lp_obc_north ) THEN 469 463 ! ... North obc Force filtering mask for the grad D 470 464 DO jj = njn0, njn1 … … 483 477 END IF 484 478 485 IF( lp southobc) THEN479 IF( lp_obc_south ) THEN 486 480 ! ... South obc Force filtering mask for the grad D 487 481 DO jj = njs0, njs1 … … 504 498 505 499 ! ... West open boundary surface 506 IF( lp westobc) THEN500 IF( lp_obc_west ) THEN 507 501 DO ji = niw0, niw1 508 502 DO jj = 1, jpj … … 513 507 514 508 ! ... East open boundary surface 515 IF( lp eastobc) THEN509 IF( lp_obc_east ) THEN 516 510 DO ji = nie0, nie1 517 511 DO jj = 1, jpj … … 522 516 523 517 ! ... North open boundary vertical surface 524 IF( lp northobc) THEN518 IF( lp_obc_north ) THEN 525 519 DO jj = njn0, njn1 526 520 DO ji = 1, jpi … … 531 525 532 526 ! ... South open boundary vertical surface 533 IF( lp southobc) THEN527 IF( lp_obc_south ) THEN 534 528 DO jj = njs0, njs1 535 529 DO ji = 1, jpi … … 551 545 552 546 ! ... control of the west boundary 553 IF( lp westobc) THEN547 IF( lp_obc_west ) THEN 554 548 IF( jpiwob < 2 .OR. jpiwob >= jpiglo-2 ) THEN 555 549 IF(lwp) WRITE(numout,*) … … 571 565 572 566 ! ... control of the east boundary 573 IF( lp eastobc) THEN567 IF( lp_obc_east ) THEN 574 568 IF( jpieob < 4 .OR. jpieob >= jpiglo ) THEN 575 569 IF(lwp) WRITE(numout,*) … … 591 585 592 586 ! ... control of the north boundary 593 IF( lp northobc) THEN587 IF( lp_obc_north ) THEN 594 588 IF( jpjnob < 4 .OR. jpjnob >= jpjglo ) THEN 595 589 IF(lwp) WRITE(numout,*) … … 611 605 612 606 ! ... control of the south boundary 613 IF( lp southobc) THEN607 IF( lp_obc_south ) THEN 614 608 IF( jpjsob < 2 .OR. jpjsob >= jpjglo-2 ) THEN 615 609 IF(lwp) WRITE(numout,*) … … 719 713 ! 8. Control print 720 714 ! ... control of the east boundary 721 IF( lp eastobc) THEN715 IF( lp_obc_east ) THEN 722 716 istop = 0 723 717 IF( jpieob < 4 .OR. jpieob >= jpiglo ) THEN … … 763 757 764 758 ! ... control of the west boundary 765 IF( lp westobc) THEN759 IF( lp_obc_west ) THEN 766 760 istop = 0 767 761 IF( jpiwob < 2 .OR. jpiwob >= jpiglo ) THEN … … 806 800 807 801 ! control of the north boundary 808 IF( lp northobc) THEN802 IF( lp_obc_north ) THEN 809 803 istop = 0 810 804 IF( jpjnob < 4 .OR. jpjnob >= jpjglo ) THEN … … 849 843 850 844 ! control of the south boundary 851 IF( lp southobc) THEN845 IF( lp_obc_south ) THEN 852 846 istop = 0 853 847 IF( jpjsob < 2 .OR. jpjsob >= jpjglo ) THEN -
trunk/NEMO/OPA_SRC/OBC/obcrad.F90
r32 r78 56 56 !! not fixed. In case of fixed open boundaries does nothing. 57 57 !! 58 !! The logical variable lp eastobc, and/or lpwestobc, and/or lpnorthobc,59 !! and/or lp southobcallow the user to determine which boundary is an58 !! The logical variable lp_obc_east, and/or lp_obc_west, and/or lp_obc_north, 59 !! and/or lp_obc_south allow the user to determine which boundary is an 60 60 !! open one (must be done in the param_obc.h90 file). 61 61 !! … … 71 71 !!---------------------------------------------------------------------- 72 72 73 IF( lp eastobc.AND. .NOT.lfbceast ) CALL obc_rad_east ( kt ) ! East open boundary74 75 IF( lp westobc.AND. .NOT.lfbcwest ) CALL obc_rad_west ( kt ) ! West open boundary76 77 IF( lp northobc.AND. .NOT.lfbcnorth ) CALL obc_rad_north( kt ) ! North open boundary78 79 IF( lp southobc.AND. .NOT.lfbcsouth ) CALL obc_rad_south( kt ) ! South open boundary73 IF( lp_obc_east .AND. .NOT.lfbceast ) CALL obc_rad_east ( kt ) ! East open boundary 74 75 IF( lp_obc_west .AND. .NOT.lfbcwest ) CALL obc_rad_west ( kt ) ! West open boundary 76 77 IF( lp_obc_north .AND. .NOT.lfbcnorth ) CALL obc_rad_north( kt ) ! North open boundary 78 79 IF( lp_obc_south .AND. .NOT.lfbcsouth ) CALL obc_rad_south( kt ) ! South open boundary 80 80 81 81 END SUBROUTINE obc_rad -
trunk/NEMO/OPA_SRC/OBC/obcrst.F90
r32 r78 114 114 ! 1.3 Write east boundary array if any. 115 115 ! ------------------------------------- 116 IF( lp eastobc) THEN116 IF( lp_obc_east ) THEN 117 117 IF( lfbceast ) THEN 118 118 IF(lwp) THEN … … 158 158 ! 1.4 Write west boundary arrays if any 159 159 ! ------------------------------------- 160 IF( lp westobc) THEN160 IF( lp_obc_west ) THEN 161 161 IF( lfbcwest ) THEN 162 162 IF(lwp) THEN … … 203 203 ! 1.5 Write north boundary arrays if any 204 204 ! -------------------------------------- 205 IF( lp northobc) THEN205 IF( lp_obc_north ) THEN 206 206 IF( lfbcnorth ) THEN 207 207 IF(lwp) THEN … … 247 247 ! 1.6 Write south boundary arrays if any 248 248 ! -------------------------------------- 249 IF( lp southobc) THEN249 IF( lp_obc_south ) THEN 250 250 IF( lfbcsouth ) THEN 251 251 IF(lwp) THEN … … 405 405 ! 1.4 Control of which boundary is open 406 406 ! ------------------------------------- 407 IF( ( lpeastobc ).AND. ( jpieob1 /= 0 ) ) THEN407 IF( lp_obc_east .AND. ( jpieob1 /= 0 ) ) THEN 408 408 IF(lwp) THEN 409 409 WRITE(numout,*) ' ' … … 416 416 END IF 417 417 418 IF( ( lpwestobc ).AND. ( jpiwob1 /= 0 ) ) THEN418 IF( lp_obc_west .AND. ( jpiwob1 /= 0 ) ) THEN 419 419 IF(lwp) THEN 420 420 WRITE(numout,*) ' ' … … 427 427 END IF 428 428 429 IF( ( lpnorthobc ).AND. ( jpjnob1 /= 0 ) ) THEN429 IF( lp_obc_north .AND. ( jpjnob1 /= 0 ) ) THEN 430 430 IF(lwp) THEN 431 431 WRITE(numout,*) ' ' … … 438 438 END IF 439 439 440 IF( ( lpsouthobc ).AND. ( jpjsob1 /= 0 ) ) THEN440 IF( lp_obc_south .AND. ( jpjsob1 /= 0 ) ) THEN 441 441 IF(lwp) THEN 442 442 WRITE(numout,*) ' ' … … 452 452 ! 1.5 Control of the limit of the boundaries 453 453 ! ------------------------------------------ 454 IF( ( lpeastobc ).AND. ( jpieob1 /= 0 ) ) THEN454 IF( lp_obc_east .AND. ( jpieob1 /= 0 ) ) THEN 455 455 IF(lwp) THEN 456 456 IF( ied1 /= ied0 ) THEN … … 465 465 END IF 466 466 467 IF( ( lpwestobc ).AND. ( jpiwob1 /= 0 ) ) THEN467 IF( lp_obc_west .AND. ( jpiwob1 /= 0 ) ) THEN 468 468 IF(lwp) THEN 469 469 IF( iwd1 /= iwd0 ) THEN … … 478 478 END IF 479 479 480 IF( ( lpnorthobc ).AND. ( jpjnob1 /= 0 ) ) THEN480 IF( lp_obc_north .AND. ( jpjnob1 /= 0 ) ) THEN 481 481 IF(lwp) THEN 482 482 IF( ind1 /= ind0 ) THEN … … 491 491 END IF 492 492 493 IF( ( lpsouthobc ).AND. ( jpjsob1 /= 0 ) ) THEN493 IF( lp_obc_south .AND. ( jpjsob1 /= 0 ) ) THEN 494 494 IF(lwp) THEN 495 495 IF( isd1 /= isd0 ) THEN … … 510 510 ! 2.1 Read east boundary array if any. 511 511 ! ------------------------------------ 512 IF( lp eastobc) THEN512 IF( lp_obc_east ) THEN 513 513 IF( jpieob1 /= 0) THEN 514 514 IF( nje0+njmpp-1 == jpjed .AND. nie1 >= nie0 ) THEN … … 545 545 ELSE 546 546 547 ! lp eastobcwas not TRUE previously547 ! lp_obc_east was not TRUE previously 548 548 END IF 549 549 … … 552 552 ! 2.2 Read west boundary arrays if any. 553 553 ! ------------------------------------- 554 IF( lp westobc) THEN554 IF( lp_obc_west ) THEN 555 555 IF( jpiwob1 /= 0) THEN 556 556 IF( njw0+njmpp-1 == jpjwd .AND. niw1 >= niw0 ) THEN … … 587 587 ELSE 588 588 589 ! lp westobcwas not TRUE previously589 ! lp_obc_west was not TRUE previously 590 590 END IF 591 591 … … 594 594 ! 2.3 Read north boundary arrays if any. 595 595 ! -------------------------------------- 596 IF( lp northobc) THEN596 IF( lp_obc_north ) THEN 597 597 IF( jpjnob1 /= 0) THEN 598 598 IF( nin0+nimpp-1 == jpind .AND. njn1 >= njn0 ) THEN … … 629 629 ELSE 630 630 631 ! lp northobcwas not TRUE previously631 ! lp_obc_north was not TRUE previously 632 632 END IF 633 633 … … 636 636 ! 2.4 Read south boundary arrays if any. 637 637 ! ------------------------------------- 638 IF( lp southobc) THEN638 IF( lp_obc_south ) THEN 639 639 IF( jpjsob1 /= 0) THEN 640 640 IF( nis0+nimpp-1 == jpisd .AND. njs1 >= njs0 ) THEN … … 670 670 END DO 671 671 ELSE 672 ! lp southobcwas not TRUE previously672 ! lp_obc_south was not TRUE previously 673 673 END IF 674 674 … … 677 677 678 678 IF( lk_mpp ) THEN 679 IF( lp eastobc) THEN679 IF( lp_obc_east ) THEN 680 680 # if ! defined key_dynspg_fsc 681 681 CALL mppobc(bebnd,jpjed,jpjef,jpieob,3*3,2,jpj) … … 686 686 CALL mppobc(sebnd,jpjed,jpjef,jpieob+1,jpk*2*2,2,jpj) 687 687 ENDIF 688 IF( lp westobc) THEN688 IF( lp_obc_west ) THEN 689 689 # if ! defined key_dynspg_fsc 690 690 CALL mppobc(bwbnd,jpjwd,jpjwf,jpiwob,3*3,2,jpj) … … 695 695 CALL mppobc(swbnd,jpjwd,jpjwf,jpiwob,jpk*2*2,2,jpj) 696 696 ENDIF 697 IF( lp northobc) THEN697 IF( lp_obc_north ) THEN 698 698 # if ! defined key_dynspg_fsc 699 699 CALL mppobc(bnbnd,jpind,jpinf,jpjnob ,3*3 ,1,jpi) … … 704 704 CALL mppobc(snbnd,jpind,jpinf,jpjnob+1,jpk*2*2,1,jpi) 705 705 ENDIF 706 IF( lp southobc) THEN706 IF( lp_obc_south ) THEN 707 707 # if ! defined key_dynspg_fsc 708 708 CALL mppobc(bsbnd,jpisd,jpisf,jpjsob, 3*3,1,jpi) -
trunk/NEMO/OPA_SRC/OBC/obcspg.F90
r32 r78 60 60 !! ** Purpose : 61 61 !! Compute now barotropic stream function at the open boundaries. 62 !! (lp eastobc, and/or lpwestobc, and/or lpnorthobc, and/or lpsouthobc).62 !! (lp_obc_east, and/or lp_obc_west, and/or lp_obc_north, and/or lp_obc_south). 63 63 !! Deduce the correct bsf trend on the open boundaries and isolated 64 64 !! coastlines previous to the call to the barotropic solver. … … 108 108 END DO 109 109 110 IF( lp eastobc) CALL obc_spg_east ( kt ) ! East open boundary111 112 IF( lp westobc) CALL obc_spg_west ( kt ) ! West open boundary113 114 IF( lp northobc) CALL obc_spg_north( kt ) ! North open boundary115 116 IF( lp southobc) CALL obc_spg_south( kt ) ! South open boundary110 IF( lp_obc_east ) CALL obc_spg_east ( kt ) ! East open boundary 111 112 IF( lp_obc_west ) CALL obc_spg_west ( kt ) ! West open boundary 113 114 IF( lp_obc_north ) CALL obc_spg_north( kt ) ! North open boundary 115 116 IF( lp_obc_south ) CALL obc_spg_south( kt ) ! South open boundary 117 117 118 118 IF( lk_mpp ) CALL lbc_lnk( gcbob, 'G', 1. ) … … 239 239 SUBROUTINE obc_spg_west ( kt ) 240 240 !!------------------------------------------------------------------------------ 241 !! SUBROUTINE obc_spg_west242 !! *************************241 !! *** SUBROUTINE obc_spg_west *** 242 !! 243 243 !! ** Purpose : 244 244 !! Apply the radiation algorithm on west OBC stream function. -
trunk/NEMO/OPA_SRC/OBC/obctra.F90
r32 r78 58 58 !! This routine is called by the tranxt.F routine and updates ta,sa 59 59 !! which are the actual temperature and salinity fields. 60 !! The logical variable lp eastobc, and/or lpwestobc, and/or lpnorthobc,61 !! and/or lp southobcallow the user to determine which boundary is an60 !! The logical variable lp_obc_east, and/or lp_obc_west, and/or lp_obc_north, 61 !! and/or lp_obc_south allow the user to determine which boundary is an 62 62 !! open one (must be done in the param_obc.h90 file). 63 63 !! … … 89 89 END IF 90 90 91 IF( lp eastobc) CALL obc_tra_east ( kt ) ! East open boundary92 93 IF( lp westobc) CALL obc_tra_west ( kt ) ! West open boundary94 95 IF( lp northobc) CALL obc_tra_north( kt ) ! North open boundary96 97 IF( lp southobc) CALL obc_tra_south( kt ) ! South open boundary91 IF( lp_obc_east ) CALL obc_tra_east ( kt ) ! East open boundary 92 93 IF( lp_obc_west ) CALL obc_tra_west ( kt ) ! West open boundary 94 95 IF( lp_obc_north ) CALL obc_tra_north( kt ) ! North open boundary 96 97 IF( lp_obc_south ) CALL obc_tra_south( kt ) ! South open boundary 98 98 99 99 IF( lk_mpp ) THEN !!bug ??? -
trunk/NEMO/OPA_SRC/OBC/obcvol.F90
r32 r78 110 110 111 111 ! ... West open boundary 112 IF( lp westobc) THEN ! ... Total transport through the West OBC112 IF( lp_obc_west ) THEN ! ... Total transport through the West OBC 113 113 DO ji = fs_niw0, fs_niw1 ! Vector opt. 114 114 DO jk = 1, jpkm1 … … 121 121 122 122 ! ... East open boundary 123 IF( lp eastobc) THEN ! ... Total transport through the East OBC123 IF( lp_obc_east ) THEN ! ... Total transport through the East OBC 124 124 DO ji = fs_nie0, fs_nie1 ! Vector opt. 125 125 DO jk = 1, jpkm1 … … 132 132 133 133 ! ... North open boundary 134 IF( lp northobc) THEN ! ... Total transport through the North OBC134 IF( lp_obc_north ) THEN ! ... Total transport through the North OBC 135 135 DO jj = fs_njn0, fs_njn1 ! Vector opt. 136 136 DO jk = 1, jpkm1 … … 143 143 144 144 ! ... South open boundary 145 IF( lp southobc) THEN ! ... Total transport through the South OBC145 IF( lp_obc_south ) THEN ! ... Total transport through the South OBC 146 146 DO jj = fs_njs0, fs_njs1 ! Vector opt. 147 147 DO jk = 1, jpkm1 … … 182 182 ztranst = 0.e0 183 183 184 IF( lp westobc) THEN184 IF( lp_obc_west ) THEN 185 185 186 186 ! ... correction of the west velocity … … 202 202 END IF 203 203 204 IF( lp eastobc) THEN204 IF( lp_obc_east ) THEN 205 205 206 206 ! ... correction of the east velocity … … 222 222 END IF 223 223 224 IF( lp northobc) THEN224 IF( lp_obc_north ) THEN 225 225 226 226 ! ... correction of the north velocity … … 241 241 END IF 242 242 243 IF( lp southobc) THEN243 IF( lp_obc_south ) THEN 244 244 245 245 ! ... correction of the south velocity
Note: See TracChangeset
for help on using the changeset viewer.