Changeset 3032 for branches/2011/dev_CMCC/NEMOGCM/NEMO
- Timestamp:
- 2011-10-31T15:48:12+01:00 (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_CMCC/NEMOGCM/NEMO/OPA_SRC/ASM/asminc.F90
r2715 r3032 25 25 USE oce ! Dynamics and active tracers defined in memory 26 26 USE divcur ! Horizontal divergence and relative vorticity 27 USE ldfdyn_oce ! ocean dynamics: lateral physics 27 28 USE eosbn2 ! Equation of state - in situ and potential density 28 29 USE zpshde ! Partial step : Horizontal Derivative … … 55 56 LOGICAL, PUBLIC :: ln_sshinc = .FALSE. !: No sea surface height assimilation increment 56 57 LOGICAL, PUBLIC :: ln_salfix = .FALSE. !: Apply minimum salinity check 58 INTEGER, PUBLIC :: ndivdmp = 0 !: Apply divergence damping filter ndivdmp times 57 59 58 60 REAL(wp), PUBLIC, DIMENSION(:,:,:), ALLOCATABLE :: t_bkg , s_bkg !: Background temperature and salinity … … 76 78 REAL(wp), DIMENSION(:,:), ALLOCATABLE :: ssh_bkg, ssh_bkginc ! Background sea surface height and its increment 77 79 80 !! * Substitutions 81 # include "domzgr_substitute.h90" 82 # include "ldfdyn_substitute.h90" 83 # include "vectopt_loop_substitute.h90" 84 78 85 !!---------------------------------------------------------------------- 79 86 !! NEMO/OPA 3.3 , NEMO Consortium (2010) … … 93 100 !! ** Action : 94 101 !!---------------------------------------------------------------------- 102 !! 103 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released, wrk_2d_1 104 USE wrk_nemo, ONLY: hdiv => wrk_2d_1 ! Horizontal divergence 105 !! 106 INTEGER :: ji,jj,jk 95 107 INTEGER :: jt 96 108 INTEGER :: imid … … 116 128 & ln_asmdin, ln_asmiau, & 117 129 & nitbkg, nitdin, nitiaustr, nitiaufin, niaufn, & 118 & nittrjfrq, ln_salfix, salfixmin 130 & nittrjfrq, ln_salfix, salfixmin, & 131 & ndivdmp 119 132 !!---------------------------------------------------------------------- 120 133 … … 420 433 421 434 !----------------------------------------------------------------------- 435 ! Apply divergence damping filter 436 !----------------------------------------------------------------------- 437 438 439 IF ( ln_dyninc .AND. ndivdmp.gt.0 ) THEN 440 441 IF( wrk_in_use( 2, 1) ) THEN 442 CALL ctl_stop('asm_inc_init : requested workspace for divergence unavailable.') 443 ENDIF 444 445 446 DO jt = 1, ndivdmp 447 448 DO jk = 1, jpkm1 449 450 hdiv(:,:) = 0._wp 451 452 DO jj = 2, jpjm1 453 DO ji = fs_2, fs_jpim1 ! vector opt. 454 hdiv(ji,jj) = & 455 ( e2u(ji ,jj)*fse3u(ji ,jj,jk) * u_bkginc(ji ,jj,jk) & 456 - e2u(ji-1,jj)*fse3u(ji-1,jj,jk) * u_bkginc(ji-1,jj,jk) & 457 + e1v(ji,jj )*fse3v(ji,jj ,jk) * v_bkginc(ji,jj ,jk) & 458 - e1v(ji,jj-1)*fse3v(ji,jj-1,jk) * v_bkginc(ji,jj-1,jk) ) & 459 / ( e1t(ji,jj) * e2t(ji,jj) * fse3t(ji,jj,jk) ) 460 END DO 461 END DO 462 463 CALL lbc_lnk( hdiv, 'T', 1. ) ! lateral boundary cond. (no sign change) 464 465 DO jj = 2, jpjm1 466 DO ji = fs_2, fs_jpim1 ! vector opt. 467 u_bkginc(ji,jj,jk) = u_bkginc(ji,jj,jk) + 0.2 * ( e1t(ji+1,jj)*e2t(ji+1,jj) * hdiv(ji+1,jj) & 468 - e1t(ji ,jj)*e2t(ji ,jj) * hdiv(ji ,jj) ) & 469 / e1u(ji,jj) * umask(ji,jj,jk) 470 v_bkginc(ji,jj,jk) = v_bkginc(ji,jj,jk) + 0.2 * ( e1t(ji,jj+1)*e2t(ji,jj+1) * hdiv(ji,jj+1) & 471 - e1t(ji,jj )*e2t(ji,jj ) * hdiv(ji,jj ) ) & 472 / e2v(ji,jj) * vmask(ji,jj,jk) 473 END DO 474 END DO 475 476 END DO 477 478 END DO 479 480 IF( wrk_not_released( 2, 1) ) THEN 481 CALL ctl_stop('asm_inc_init : failed to release divergence') 482 ENDIF 483 484 ENDIF 485 486 487 488 !----------------------------------------------------------------------- 422 489 ! Allocate and initialize the background state arrays 423 490 !-----------------------------------------------------------------------
Note: See TracChangeset
for help on using the changeset viewer.