- Timestamp:
- 2011-03-15T15:49:11+01:00 (13 years ago)
- Location:
- branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_oce.F90
r2684 r2689 3 3 !! *** MODULE dynspg_oce *** 4 4 !! 5 !! Ocean dynamics: Define in memory s urface pressure gradient variables5 !! Ocean dynamics: Define in memory some surface pressure gradient variables 6 6 !!====================================================================== 7 7 !! History : 1.0 ! 2005-12 (C. Talandier, G. Madec) Original code … … 9 9 !!---------------------------------------------------------------------- 10 10 USE par_oce ! ocean parameters 11 USE lib_mpp ! MPP library 11 12 12 13 IMPLICIT NONE 13 14 PUBLIC 14 15 16 PUBLIC dynspg_oce_alloc ! called in dynspg.F90 17 15 18 ! !!! Surface pressure gradient logicals 16 19 #if defined key_dynspg_exp || defined key_esopa … … 30 33 #endif 31 34 32 #if defined key_dynspg_ts || defined key_vvl || defined key_esopa33 ! !!! Time splitting scheme (sub-time step variables)35 ! !!! Time splitting scheme (key_dynspg_ts) 36 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshn_e, ssha_e ! sea surface heigth (now, after, average) 34 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ua_e , va_e ! barotropic velocities (after) 35 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshn_e, ssha_e ! sea surface heigth (now, after, average)36 38 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hu_e , hv_e ! now ocean depth ( = Ho+sshn_e ) 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hur_e , hvr_e ! inverse of the now depth ( = 1/(Ho+sshn_e) )38 #endif !!---------------------------------------------------------------------- 39 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: hur_e , hvr_e ! inverse of hu_e and hv_e 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshn_b ! before field without time-filter 39 41 40 !! NEMO/OPA 4.0 , LODYC-IPSL (2011) 41 !! $Id$ 42 !!---------------------------------------------------------------------- 43 !! NEMO/OPA 4.0 , NEMO Consortium (2011) 44 !! $Id$ 42 45 !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt) 46 !!---------------------------------------------------------------------- 47 CONTAINS 48 49 INTEGER FUNCTION dynspg_oce_alloc() 50 !!---------------------------------------------------------------------- 51 !! *** routine dynspg_oce_alloc *** 52 !!---------------------------------------------------------------------- 53 ALLOCATE( sshn_e(jpi,jpj) , ua_e(jpi,jpj) , hu_e(jpi,jpj) , hur_e(jpi,jpj) , & 54 & ssha_e(jpi,jpj) , va_e(jpi,jpj) , hv_e(jpi,jpj) , hvr_e(jpi,jpj) , & 55 & sshn_b(jpi,jpj) , STAT = dynspg_oce_alloc ) 56 ! 57 IF( lk_mpp ) CALL mpp_sum ( dynspg_oce_alloc ) 58 IF( dynspg_oce_alloc /= 0 ) CALL ctl_warn('dynspg_oce_alloc: failed to allocate arrays') 59 ! 60 END FUNCTION dynspg_oce_alloc 61 43 62 !!====================================================================== 44 63 END MODULE dynspg_oce -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r2684 r2689 53 53 REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:) :: ftsw, ftse ! (only used with een vorticity scheme) 54 54 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_b, vn_b 56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ub_b, vb_b 55 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: un_b, vn_b ! now averaged velocity 56 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: ub_b, vb_b ! before averaged velocity 57 57 58 58 !! * Substitutions … … 70 70 !! *** routine dyn_spg_ts_alloc *** 71 71 !!---------------------------------------------------------------------- 72 ! 73 ALLOCATE( ftnw (jpi,jpj) , ftne (jpi,jpj) , ftsw (jpi,jpj) , ftse (jpi,jpj) , & 74 & un_b (jpi,jpj) , vn_b (jpi,jpj) , ub_b (jpi,jpj) , vb_b (jpi,jpj) , ua_e (jpi,jpj) , va_e (jpi,jpj) , & 75 & sshn_e(jpi,jpj) , ssha_e(jpi,jpj) , sshn_b(jpi,jpj) , & 76 & hu_e (jpi,jpj) , hv_e (jpi,jpj) , hur_e (jpi,jpj) , hvr_e(jpi,jpj) , STAT=dyn_spg_ts_alloc ) 77 IF(lk_mpp) CALL mpp_sum( dyn_spg_ts_alloc ) 72 ALLOCATE( ftnw (jpi,jpj) , ftne(jpi,jpj) , un_b(jpi,jpj) , vn_b(jpi,jpj) , & 73 & ftsw (jpi,jpj) , ftse(jpi,jpj) , ub_b(jpi,jpj) , vb_b(jpi,jpj) , STAT= dyn_spg_ts_alloc ) 74 ! 75 IF( lk_mpp ) CALL mpp_sum( dyn_spg_ts_alloc ) 76 IF( dyn_spg_ts_alloc /= 0 ) CALL ctl_warn('dynspg_oce_alloc: failed to allocate arrays') 78 77 ! 79 78 END FUNCTION dyn_spg_ts_alloc … … 107 106 !! References : Griffies et al., (2003): A technical guide to MOM4. NOAA/GFDL 108 107 !!--------------------------------------------------------------------- 109 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 110 USE wrk_nemo, ONLY: zhdiv => wrk_2d_1, zsshb_e => wrk_2d_2 111 USE wrk_nemo, ONLY: zbfru => wrk_2d_3 , zbfrv => wrk_2d_4 112 USE wrk_nemo, ONLY: zsshun_e => wrk_2d_5, zsshvn_e => wrk_2d_6 113 USE wrk_nemo, ONLY: zcu => wrk_2d_7, zwx => wrk_2d_8, zua => wrk_2d_9, zun => wrk_2d_10 114 USE wrk_nemo, ONLY: zcv => wrk_2d_11, zwy => wrk_2d_12, zva => wrk_2d_13, zvn => wrk_2d_14 115 USE wrk_nemo, ONLY: zun_e => wrk_2d_15, zub_e => wrk_2d_16, zu_sum => wrk_2d_17 116 USE wrk_nemo, ONLY: zvn_e => wrk_2d_18, zvb_e => wrk_2d_19, zv_sum => wrk_2d_20 117 USE wrk_nemo, ONLY: zssh_sum => wrk_2d_21 118 !! 108 USE wrk_nemo, ONLY: wrk_in_use, wrk_not_released 109 USE wrk_nemo, ONLY: zsshun_e => wrk_2d_1 , zsshb_e => wrk_2d_2 , zhdiv => wrk_2d_3 110 USE wrk_nemo, ONLY: zsshvn_e => wrk_2d_4 , zssh_sum => wrk_2d_5 111 USE wrk_nemo, ONLY: zcu => wrk_2d_6 , zwx => wrk_2d_7 , zua => wrk_2d_8 , zbfru => wrk_2d_9 112 USE wrk_nemo, ONLY: zcv => wrk_2d_10 , zwy => wrk_2d_11 , zva => wrk_2d_12 , zbfrv => wrk_2d_13 113 USE wrk_nemo, ONLY: zun => wrk_2d_14 , zun_e => wrk_2d_15 , zub_e => wrk_2d_16 , zu_sum => wrk_2d_17 114 USE wrk_nemo, ONLY: zvn => wrk_2d_18 , zvn_e => wrk_2d_19 , zvb_e => wrk_2d_20 , zv_sum => wrk_2d_21 115 ! 119 116 INTEGER, INTENT(in) :: kt ! ocean time-step index 120 ! !117 ! 121 118 INTEGER :: ji, jj, jk, jn ! dummy loop indices 122 119 INTEGER :: icycle ! local scalar … … 128 125 !!---------------------------------------------------------------------- 129 126 130 IF( wrk_in_use(2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, 127 IF( wrk_in_use(2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, & 131 128 & 11,12,13,14,15,16,17,18,19,20,21 ) ) THEN 132 129 CALL ctl_stop( 'dyn_spg_ts: requested workspace arrays unavailable' ) ; RETURN 133 END 130 ENDIF 134 131 135 132 IF( kt == nit000 ) THEN !* initialisation … … 567 564 IF( wrk_not_released(2, 1, 2, 3, 4, 5, 6, 7, 8, 9,10, & 568 565 & 11,12,13,14,15,16,17,18,19,20,21) ) & 569 CALL ctl_stop('dyn_spg_ts: failed to release workspace arrays .')566 CALL ctl_stop('dyn_spg_ts: failed to release workspace arrays') 570 567 ! 571 568 END SUBROUTINE dyn_spg_ts … … 642 639 643 640 IF( iom_varid( numror, 'sshn_b', ldstop = .FALSE. ) > 0 ) THEN 644 CALL iom_get( numror, jpdom_autoglo, 'sshn_b' , sshn_b (:,:) ) ! filtered extrenalssh641 CALL iom_get( numror, jpdom_autoglo, 'sshn_b' , sshn_b (:,:) ) ! filtered ssh 645 642 ELSE 646 sshn_b(:,:) =sshb(:,:) ! if not in restart set previous time mean to current baroclinic before value643 sshn_b(:,:) = sshb(:,:) ! if not in restart set previous time mean to current baroclinic before value 647 644 ENDIF 648 645 ELSEIF( TRIM(cdrw) == 'WRITE' ) THEN -
branches/dev_r2586_dynamic_mem/NEMOGCM/NEMO/OPA_SRC/oce.F90
r2636 r2689 18 18 LOGICAL, PUBLIC :: l_traldf_rot = .FALSE. !: rotated laplacian operator for lateral diffusion 19 19 20 !! dynamics and tracer fields ! before ! now ! after! the after trends becomes the fields21 !! -------------------------- ! fields ! fields ! trends! only after tra_zdf and dyn_spg22 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ub , un , ua!: i-horizontal velocity [m/s]23 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: vb , vn , va!: j-horizontal velocity [m/s]24 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: wn!: vertical velocity [m/s]25 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rotb , rotn!: relative vorticity [s-1]26 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hdivb, hdivn!: horizontal divergence [s-1]27 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tb , tn , ta!: potential temperature [Celcius]28 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sb , sn , sa!: salinity [psu]29 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsb , tsn , tsa!: 4D T-S fields [Celcius,psu]30 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rn2b , rn2!: brunt-vaisala frequency**2 [s-2]20 !! dynamics and tracer fields ! before ! now ! after ! the after trends becomes the fields 21 !! -------------------------- ! fields ! fields ! trends ! only after tra_zdf and dyn_spg 22 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: ub , un , ua !: i-horizontal velocity [m/s] 23 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: vb , vn , va !: j-horizontal velocity [m/s] 24 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: wn !: vertical velocity [m/s] 25 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rotb , rotn !: relative vorticity [s-1] 26 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: hdivb, hdivn !: horizontal divergence [s-1] 27 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: tb , tn , ta !: potential temperature [Celcius] 28 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: sb , sn , sa !: salinity [psu] 29 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: tsb , tsn , tsa !: 4D T-S fields [Celcius,psu] 30 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rn2b , rn2 !: brunt-vaisala frequency**2 [s-2] 31 31 ! 32 32 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rhd !: in situ density anomalie rhd=(rho-rau0)/rau0 [no units] 33 33 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) :: rhop !: potential volumic mass [kg/m3] 34 34 35 !! free surface ! before ! now ! after ! 36 !! ------------ ! fields ! fields ! trends ! 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshb , sshn , ssha !: sea surface height at t-point [m] 38 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshu_b , sshu_n , sshu_a !: sea surface height at u-point [m] 39 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshv_b , sshv_n , sshv_a !: sea surface height at u-point [m] 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshf_n !: sea surface height at f-point [m] 41 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshn_b !: before field without time-filter 35 !! free surface ! before ! now ! after ! 36 !! ------------ ! fields ! fields ! trends ! 37 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshb , sshn , ssha !: sea surface height at t-point [m] 38 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshu_b , sshu_n , sshu_a !: sea surface height at u-point [m] 39 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshv_b , sshv_n , sshv_a !: sea surface height at u-point [m] 40 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: sshf_n !: sea surface height at f-point [m] 42 41 ! 43 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: spgu, spgv 42 REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:) :: spgu, spgv !: horizontal surface pressure gradient 44 43 45 44 !! interpolated gradient (only used in zps case) … … 78 77 & sshv_b(jpi,jpj) , sshv_n(jpi,jpj) , sshv_a(jpi,jpj) , & 79 78 & sshf_n(jpi,jpj) , & 80 & sshn_b(jpi,jpj) , &81 79 & spgu (jpi,jpj) , spgv(jpi,jpj) , & 82 80 & gtsu(jpi,jpj,jpts), gtsv(jpi,jpj,jpts), &
Note: See TracChangeset
for help on using the changeset viewer.