Changeset 413
- Timestamp:
- 2006-03-20T18:27:15+01:00 (18 years ago)
- Location:
- trunk/NEMO/OPA_SRC
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/NEMO/OPA_SRC/DYN/dynspg_flt.F90
r392 r413 33 33 USE prtctl ! Print control 34 34 USE in_out_manager ! I/O manager 35 USE solmat ! matrix construction for elliptic solvers 35 36 USE agrif_opa_interp 36 37 … … 132 133 z2dt = 2. * rdt ! time step: leap-frog 133 134 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt ! time step: Euler if restart from rest 135 IF( neuler == 0 .AND. kt == nit000+1 ) CALL sol_mat(kt) 134 136 z2dtg = grav * z2dt 135 137 zraur = 1. / rauw … … 175 177 176 178 CALL Agrif_dyn( kt ) 177 178 179 #endif 179 180 #if defined key_orca_r2 … … 240 241 241 242 #if defined key_agrif 242 243 If (.NOT.AGRIF_ROOT()) THEN 244 243 IF( .NOT. AGRIF_ROOT() ) THEN 245 244 ! add contribution of gradient of after barotropic transport divergence 246 IF ((nbondi == -1).OR.(nbondi == 2)) gcb(3,:) = gcb(3,:) & 247 -znugdt * z2dt*laplacu(2,:)*gcdprc(3,:)*hu(2,:)*e2u(2,:) 248 IF ((nbondi == 1).OR.(nbondi == 2)) gcb(nlci-2,:) = gcb(nlci-2,:) & 249 +znugdt * z2dt*laplacu(nlci-2,:)*gcdprc(nlci-2,:)*hu(nlci-2,:)*e2u(nlci-2,:) 250 IF ((nbondj == -1).OR.(nbondj == 2)) gcb(:,3) = gcb(:,3) & 251 -znugdt * z2dt*laplacv(:,2)*gcdprc(:,3)*hv(:,2)*e1v(:,2) 252 IF ((nbondj == 1).OR.(nbondj == 2)) gcb(:,nlcj-2) = gcb(:,nlcj-2) & 253 +znugdt * z2dt*laplacv(:,nlcj-2)*gcdprc(:,nlcj-2)*hv(:,nlcj-2)*e1v(:,nlcj-2) 254 255 ENDIF 256 245 IF( (nbondi == -1) .OR. (nbondi == 2) ) gcb(3,:) = gcb(3,:) & 246 & -znugdt * z2dt*laplacu(2,:)*gcdprc(3,:)*hu(2,:)*e2u(2,:) 247 IF( (nbondi == 1) .OR. (nbondi == 2) ) gcb(nlci-2,:) = gcb(nlci-2,:) & 248 & +znugdt * z2dt*laplacu(nlci-2,:)*gcdprc(nlci-2,:)*hu(nlci-2,:)*e2u(nlci-2,:) 249 IF( (nbondj == -1) .OR. (nbondj == 2) ) gcb(:,3) = gcb(:,3) & 250 & -znugdt * z2dt*laplacv(:,2)*gcdprc(:,3)*hv(:,2)*e1v(:,2) 251 IF( (nbondj == 1) .OR. (nbondj == 2) ) gcb(:,nlcj-2) = gcb(:,nlcj-2) & 252 & +znugdt * z2dt*laplacv(:,nlcj-2)*gcdprc(:,nlcj-2)*hv(:,nlcj-2)*e1v(:,nlcj-2) 253 ENDIF 257 254 #endif 258 255 … … 316 313 317 314 #if defined key_agrif 318 IF (.NOT. Agrif_Root()) THEN319 ! caution : grad D (fine) = grad D (coarse) at coarse/fine interface320 IF ((nbondi == -1).OR.(nbondi == 2)) spgu(2,:) = znugdt * z2dt * laplacu(2,:) * umask(2,:,1)321 IF ((nbondi == 1).OR.(nbondi == 2)) spgu(nlci-2,:) = znugdt * z2dt * laplacu(nlci-2,:) * umask(nlci-2,:,1)322 IF ((nbondj == -1).OR.(nbondj == 2)) spgv(:,2) = znugdt * z2dt * laplacv(:,2) * vmask(:,2,1)323 IF ((nbondj == 1).OR.(nbondj == 2)) spgv(:,nlcj-2) = znugdt * z2dt * laplacv(:,nlcj-2) * vmask(:,nlcj-2,1)315 IF( .NOT. Agrif_Root() ) THEN 316 ! caution : grad D (fine) = grad D (coarse) at coarse/fine interface 317 IF( (nbondi == -1) .OR. (nbondi == 2) ) spgu(2,:) = znugdt * z2dt * laplacu(2,:) * umask(2,:,1) 318 IF( (nbondi == 1) .OR. (nbondi == 2) ) spgu(nlci-2,:) = znugdt * z2dt * laplacu(nlci-2,:) * umask(nlci-2,:,1) 319 IF( (nbondj == -1) .OR. (nbondj == 2) ) spgv(:,2) = znugdt * z2dt * laplacv(:,2) * vmask(:,2,1) 320 IF( (nbondj == 1) .OR. (nbondj == 2) ) spgv(:,nlcj-2) = znugdt * z2dt * laplacv(:,nlcj-2) * vmask(:,nlcj-2,1) 324 321 ENDIF 325 322 #endif -
trunk/NEMO/OPA_SRC/DYN/dynspg_flt_jki.F90
r392 r413 37 37 USE prtctl ! Print control 38 38 USE in_out_manager ! I/O manager 39 USE solmat ! matrix construction for elliptic solvers 39 40 USE agrif_opa_interp 40 41 … … 138 139 ! time step: Euler if restart from rest 139 140 IF( neuler == 0 .AND. kt == nit000 ) z2dt = rdt 141 IF( neuler == 0 .AND. kt == nit000+1 ) CALL sol_mat(kt) 140 142 ! coefficients 141 143 z2dtg = grav * z2dt … … 183 185 184 186 CALL Agrif_dyn( kt ) 185 186 187 #endif 187 188 #if defined key_orca_r2 … … 246 247 247 248 #if defined key_agrif 248 249 If (.NOT.AGRIF_ROOT()) THEN 250 249 IF( .NOT. AGRIF_ROOT() ) THEN 251 250 ! add contribution of gradient of after barotropic transport divergence 252 IF ((nbondi == -1).OR.(nbondi == 2)) gcb(3,:) = gcb(3,:) & 253 -znugdt * z2dt*laplacu(2,:)*gcdprc(3,:)*hu(2,:)*e2u(2,:) 254 IF ((nbondi == 1).OR.(nbondi == 2)) gcb(nlci-2,:) = gcb(nlci-2,:) & 255 +znugdt * z2dt*laplacu(nlci-2,:)*gcdprc(nlci-2,:)*hu(nlci-2,:)*e2u(nlci-2,:) 256 IF ((nbondj == -1).OR.(nbondj == 2)) gcb(:,3) = gcb(:,3) & 257 -znugdt * z2dt*laplacv(:,2)*gcdprc(:,3)*hv(:,2)*e1v(:,2) 258 IF ((nbondj == 1).OR.(nbondj == 2)) gcb(:,nlcj-2) = gcb(:,nlcj-2) & 259 +znugdt * z2dt*laplacv(:,nlcj-2)*gcdprc(:,nlcj-2)*hv(:,nlcj-2)*e1v(:,nlcj-2) 260 261 ENDIF 262 251 IF( (nbondi == -1) .OR. (nbondi == 2) ) gcb(3,:) = gcb(3,:) & 252 & -znugdt * z2dt*laplacu(2,:)*gcdprc(3,:)*hu(2,:)*e2u(2,:) 253 IF( (nbondi == 1) .OR. (nbondi == 2) ) gcb(nlci-2,:) = gcb(nlci-2,:) & 254 & +znugdt * z2dt*laplacu(nlci-2,:)*gcdprc(nlci-2,:)*hu(nlci-2,:)*e2u(nlci-2,:) 255 IF( (nbondj == -1) .OR. (nbondj == 2) ) gcb(:,3) = gcb(:,3) & 256 & -znugdt * z2dt*laplacv(:,2)*gcdprc(:,3)*hv(:,2)*e1v(:,2) 257 IF( (nbondj == 1) .OR. (nbondj == 2) ) gcb(:,nlcj-2) = gcb(:,nlcj-2) & 258 & +znugdt * z2dt*laplacv(:,nlcj-2)*gcdprc(:,nlcj-2)*hv(:,nlcj-2)*e1v(:,nlcj-2) 259 ENDIF 263 260 #endif 264 261 … … 336 333 337 334 #if defined key_agrif 338 IF (.NOT. Agrif_Root()) THEN339 ! caution : grad D (fine) = grad D (coarse) at coarse/fine interface340 IF ((nbondi == -1).OR.(nbondi == 2)) spgu(2,:) = znugdt * z2dt * laplacu(2,:) * umask(2,:,1)341 IF ((nbondi == 1).OR.(nbondi == 2)) spgu(nlci-2,:) = znugdt * z2dt * laplacu(nlci-2,:) * umask(nlci-2,:,1)342 IF ((nbondj == -1).OR.(nbondj == 2)) spgv(:,2) = znugdt * z2dt * laplacv(:,2) * vmask(:,2,1)343 IF ((nbondj == 1).OR.(nbondj == 2)) spgv(:,nlcj-2) = znugdt * z2dt * laplacv(:,nlcj-2) * vmask(:,nlcj-2,1)335 IF( .NOT. Agrif_Root() ) THEN 336 ! caution : grad D (fine) = grad D (coarse) at coarse/fine interface 337 IF( (nbondi == -1) .OR. (nbondi == 2) ) spgu(2,:) = znugdt * z2dt * laplacu(2,:) * umask(2,:,1) 338 IF( (nbondi == 1) .OR. (nbondi == 2) ) spgu(nlci-2,:) = znugdt * z2dt * laplacu(nlci-2,:) * umask(nlci-2,:,1) 339 IF( (nbondj == -1) .OR. (nbondj == 2) ) spgv(:,2) = znugdt * z2dt * laplacv(:,2) * vmask(:,2,1) 340 IF( (nbondj == 1) .OR. (nbondj == 2) ) spgv(:,nlcj-2) = znugdt * z2dt * laplacv(:,nlcj-2) * vmask(:,nlcj-2,1) 344 341 ENDIF 345 342 #endif -
trunk/NEMO/OPA_SRC/SOL/solmat.F90
r392 r413 19 19 USE lbclnk ! lateral boudary conditions 20 20 USE lib_mpp ! distributed memory computing 21 USE in_out_manager ! I/O manager 21 22 22 23 IMPLICIT NONE … … 33 34 CONTAINS 34 35 35 SUBROUTINE sol_mat 36 SUBROUTINE sol_mat( kt ) 36 37 !!---------------------------------------------------------------------- 37 38 !! *** ROUTINE sol_mat *** … … 67 68 !! 9.0 ! 05-11 (V. Garnier) Surface pressure gradient organization 68 69 !!---------------------------------------------------------------------- 70 !! * Arguments 71 INTEGER, INTENT(in) :: kt 72 69 73 !! * Local declarations 70 74 INTEGER :: ji, jj ! dummy loop indices … … 93 97 gcdmat(:,:) = 0.e0 94 98 95 z2dt = 2. * rdt 99 IF( neuler == 0 .AND. kt == nit000 ) THEN 100 z2dt = rdt 101 ELSE 102 z2dt = 2. * rdt 103 ENDIF 96 104 97 105 #if defined key_dynspg_flt && ! defined key_obc -
trunk/NEMO/OPA_SRC/SOL/solver.F90
r389 r413 31 31 CONTAINS 32 32 33 SUBROUTINE solver_init 33 SUBROUTINE solver_init( kt ) 34 34 !!---------------------------------------------------------------------- 35 35 !! *** ROUTINE solver_init *** … … 77 77 !! " ! 05-11 (V. Garnier) Surface pressure gradient organization 78 78 !!---------------------------------------------------------------------- 79 !! * Arguments 80 INTEGER, INTENT(in) :: kt 81 79 82 !! * Local declarations 80 83 INTEGER :: ji, jj ! dummy loop indices … … 232 235 ! ------------------------------------------ 233 236 234 CALL sol_mat 237 CALL sol_mat( kt ) 235 238 236 239 -
trunk/NEMO/OPA_SRC/opa.F90
r392 r413 310 310 IF( lk_obc ) CALL obc_init ! Open boundaries 311 311 312 CALL day( nit000 ) ! Calendar 313 314 CALL istate_init ! ocean initial state (Dynamics and tracers) 315 312 316 IF( lk_dynspg_flt .OR. lk_dynspg_rl ) THEN 313 CALL solver_init ! Elliptic solver 314 ENDIF 315 316 CALL day( nit000 ) ! Calendar 317 318 CALL istate_init ! ocean initial state (Dynamics and tracers) 317 CALL solver_init( nit000 ) ! Elliptic solver 318 ENDIF 319 319 320 !!add 320 321 CALL eos( tb, sb, rhd, rhop ) ! before potential and in situ densities
Note: See TracChangeset
for help on using the changeset viewer.