- Timestamp:
- 2011-11-20T16:02:18+01:00 (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2011/dev_NEMO_MERGE_2011/NEMOGCM/NEMO/OPA_SRC/DYN/dynnept.F90
r3116 r3161 30 30 USE phycst 31 31 USE lbclnk 32 32 USE wrk_nemo_2 ! Memory Allocation 33 33 34 34 IMPLICIT NONE … … 102 102 USE iom 103 103 !! 104 !! Local dynamic allocation105 104 INTEGER :: ji, jj, jk ! dummy loop indices 106 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: ht ! temporary 2D workspace107 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: htn ! temporary 2D workspace108 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: tscale ! temporary 2D workspace109 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: tsp ! temporary 2D workspace110 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hur_n ! temporary 2D workspace111 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hvr_n ! temporary 2D workspace112 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hu_n ! temporary 2D workspace113 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: hv_n ! temporary 2D workspace114 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: znmask ! temporary 3D array for nmask115 105 REAL(wp) :: unemin,unemax,vnemin,vnemax ! extrema of (u*, v*) fields 116 106 REAL(wp) :: zhdivmin,zhdivmax ! extrema of horizontal divergence of (u*, v*) fields … … 118 108 REAL(wp) :: ustar,vstar ! (u*, v*) before tapering in shallow water 119 109 REAL(wp) :: hramp ! depth over which Neptune vel. is ramped down 120 !! 121 NAMELIST/namdyn_nept/ ln_neptsimp, & 122 ln_smooth_neptvel,& 123 rn_tslse, & 124 rn_tslsp, & 125 ln_neptramp, & 126 rn_htrmin, & 127 rn_htrmax 128 !!---------------------------------------------------------------------- 129 110 ! 111 REAL(wp), POINTER, DIMENSION(:,: ) :: ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n 112 REAL(wp), POINTER, DIMENSION(:,:,:) :: znmask 113 !! 114 NAMELIST/namdyn_nept/ ln_neptsimp, ln_smooth_neptvel, rn_tslse, rn_tslsp, & 115 ln_neptramp, rn_htrmin, rn_htrmax 116 !!---------------------------------------------------------------------- 117 ! ! Dynamically allocate local work arrays 118 CALL wrk_alloc( jpi, jpj , ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n ) 119 CALL wrk_alloc( jpi, jpj, jpk, znmask ) 120 ! 130 121 ! Define the (simplified) Neptune parameters 131 122 ! ========================================== … … 179 170 !! Perform dynamic allocation of shared module variables 180 171 IF( dynnept_alloc() /= 0 ) CALL ctl_warn('dynnept_alloc: array allocate failed.') 181 182 !! Dynamically allocate local work arrays183 ALLOCATE( ht(jpi,jpj), htn(jpi,jpj), tscale(jpi,jpj), tsp(jpi,jpj), &184 & hur_n(jpi,jpj), hvr_n(jpi,jpj), hu_n(jpi,jpj), hv_n(jpi,jpj), &185 & znmask(jpi,jpj,jpk) )186 172 187 173 IF( .not. ln_rstart ) THEN ! If restarting, these arrays are read from the restart file … … 350 336 !! Deallocate temporary workspace arrays, which are all local to 351 337 !! this routine, except where passed as arguments to other routines 352 DEALLOCATE( ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n, znmask ) 353 338 CALL wrk_dealloc( jpi, jpj , ht, htn, tscale, tsp, hur_n, hvr_n, hu_n, hv_n ) 339 CALL wrk_dealloc( jpi, jpj, jpk, znmask ) 340 ! 354 341 END SUBROUTINE dyn_nept_init 355 342 … … 393 380 INTEGER :: ji, jj, jk ! dummy loop indices 394 381 !!---------------------------------------------------------------------- 395 396 382 ! 397 383 IF(lwp) WRITE(numout,*) 398 384 IF(lwp) WRITE(numout,*) 'dyn_nept_div_cur_init :' … … 501 487 ENDIF 502 488 ! 503 lastkt = kt! Store kt504 489 lastkt = kt ! Store kt 490 ! 505 491 ENDIF 506 492 ! … … 530 516 531 517 532 SUBROUTINE dyn_nept_smooth_vel( htold, htnew, option )518 SUBROUTINE dyn_nept_smooth_vel( htold, htnew, ld_option ) 533 519 534 520 !!---------------------------------------------------------------------- … … 539 525 !! ** Action : - Updates the array htnew (output) with a smoothed 540 526 !! version of the (input) array htold. Form of smoothing 541 !! algorithm is controlled by the (logical) argument option.542 !!---------------------------------------------------------------------- 543 544 INTEGER :: ji, jj ! dummy loop indices545 REAL(wp), DIMENSION(jpi,jpj), INTENT( IN) :: htold! temporary 2D workspace546 LOGICAL, INTENT(IN) :: option ! temporary 2D workspace547 REAL(wp), DIMENSION(jpi,jpj) :: htnew ! temporary 2D workspace548 REAL(wp), ALLOCATABLE, DIMENSION(:,:) :: work ! temporary 2D workspace549 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: nb! temporary 2D workspace550 INTEGER, ALLOCATABLE, DIMENSION(:,:) :: iwork ! temporary 2D workspace551 552 !! Dynamically allocate local work arrays 553 ALLOCATE( work(jpi,jpj), nb(jpi,jpj), iwork(jpi,jpj) )554 527 !! algorithm is controlled by the (logical) argument ld_option. 528 !!---------------------------------------------------------------------- 529 REAL(wp), DIMENSION(jpi,jpj), INTENT(in ) :: htold ! temporary 2D workspace 530 LOGICAL , INTENT(in ) :: ld_option ! temporary 2D workspace 531 REAL(wp), DIMENSION(jpi,jpj), INTENT(inout) :: htnew ! temporary 2D workspace 532 ! 533 INTEGER :: ji, jj ! dummy loop indices 534 INTEGER , POINTER, DIMENSION(:,:) :: nb, iwork 535 REAL(wp), POINTER, DIMENSION(:,:) :: work ! temporary 2D workspace 536 !!---------------------------------------------------------------------- 537 ! 538 CALL wrk_alloc( jpi, jpj, nb, iwork ) 539 CALL wrk_alloc( jpi, jpj, work ) 540 ! 555 541 iwork(:,:) = 0 556 542 … … 565 551 !! htnew contains valid ocean depths from htold, or zero 566 552 567 !! set work to a smoothed/averaged version of htnew; choice controlled by option553 !! set work to a smoothed/averaged version of htnew; choice controlled by ld_option 568 554 !! nb is set to the sum of the weights of the valid values used in work 569 IF( option ) THEN555 IF( ld_option ) THEN 570 556 571 557 !! Apply scale-selective smoothing in determining work from htnew … … 615 601 END WHERE 616 602 617 !! Deallocate temporary workspace arrays, all local to this routine 618 DEALLOCATE( work, nb, iwork ) 619 603 !! Deallocate temporary workspace arrays, all local to this routine 604 CALL wrk_dealloc( jpi, jpj, nb, iwork ) 605 CALL wrk_dealloc( jpi, jpj, work ) 606 ! 620 607 END SUBROUTINE dyn_nept_smooth_vel 621 608
Note: See TracChangeset
for help on using the changeset viewer.