Changeset 8923 for branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO
- Timestamp:
- 2017-12-06T16:16:24+01:00 (7 years ago)
- Location:
- branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg.F90
r8898 r8923 74 74 ! 75 75 INTEGER :: ji, jj, jk ! dummy loop indices 76 REAL(wp) :: z2dt, zg_2, zintp, zgrau0r 76 REAL(wp) :: z2dt, zg_2, zintp, zgrau0r, zld ! temporary scalar 77 77 REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv 78 78 REAL(wp), POINTER, DIMENSION(:,:) :: zpice … … 121 121 END DO 122 122 END DO 123 ! 124 IF (ln_scal_load) THEN 125 zld = rn_scal_load * grav 126 DO jj = 2, jpjm1 ! add scalar approximation for load potential 127 DO ji = fs_2, fs_jpim1 ! vector opt. 128 spgu(ji,jj) = spgu(ji,jj) + zld * ( sshn(ji+1,jj) - sshn(ji,jj) ) * r1_e1u(ji,jj) 129 spgv(ji,jj) = spgv(ji,jj) + zld * ( sshn(ji,jj+1) - sshn(ji,jj) ) * r1_e2v(ji,jj) 130 END DO 131 END DO 132 ENDIF 123 133 ENDIF 124 134 ! -
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/DYN/dynspg_ts.F90
r8898 r8923 911 911 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 912 912 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 913 zwx(ji,jj) = zu_spg * zcpx(ji,jj)914 zwy(ji,jj) = zv_spg * zcpy(ji,jj)913 zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg * zcpx(ji,jj) 914 zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg * zcpy(ji,jj) 915 915 END DO 916 916 END DO … … 921 921 zu_spg = - grav * ( zsshp2_e(ji+1,jj) - zsshp2_e(ji,jj) ) * r1_e1u(ji,jj) 922 922 zv_spg = - grav * ( zsshp2_e(ji,jj+1) - zsshp2_e(ji,jj) ) * r1_e2v(ji,jj) 923 zwx(ji,jj) = zu_spg924 zwy(ji,jj) = zv_spg923 zwx(ji,jj) = (1._wp - rn_scal_load) * zu_spg 924 zwy(ji,jj) = (1._wp - rn_scal_load) * zv_spg 925 925 END DO 926 926 END DO -
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/SBC/sbctide.F90
r7646 r8923 16 16 USE ioipsl ! NetCDF IPSL library 17 17 USE lbclnk ! ocean lateral boundary conditions (or mpp link) 18 USE wrk_nemo ! 18 19 19 20 IMPLICIT NONE … … 30 31 31 32 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: amp_pot, phi_pot 32 33 REAL(wp), ALLOCATABLE, DIMENSION(:,:,:) :: amp_load, phi_load 34 33 35 !!---------------------------------------------------------------------- 34 36 !! NEMO/OPA 3.5 , NEMO Consortium (2013) … … 49 51 IF( nsec_day == NINT(0.5_wp * rdt) .OR. kt == nit000 ) THEN ! start a new day 50 52 ! 51 IF( kt == nit000 ) 53 IF( kt == nit000 )THEN 52 54 ALLOCATE( amp_pot(jpi,jpj,nb_harmo), & 53 55 & phi_pot(jpi,jpj,nb_harmo), pot_astro(jpi,jpj) ) 56 IF( ln_read_load )THEN 57 ALLOCATE( amp_load(jpi,jpj,nb_harmo), phi_load(jpi,jpj,nb_harmo) ) 58 CALL tide_init_load 59 ENDIF 54 60 ENDIF 55 61 ! 56 amp_pot(:,:,:) = 0._wp 57 phi_pot(:,:,:) = 0._wp 62 IF( ln_read_load )THEN 63 amp_pot(:,:,:) = amp_load(:,:,:) 64 phi_pot(:,:,:) = phi_load(:,:,:) 65 ELSE 66 amp_pot(:,:,:) = 0._wp 67 phi_pot(:,:,:) = 0._wp 68 ENDIF 58 69 pot_astro(:,:) = 0._wp 59 70 ! … … 101 112 DO ji = 1, jpi 102 113 DO jj = 1, jpj 103 ztmp1 = amp_pot(ji,jj,jk) * COS( phi_pot(ji,jj,jk) )104 ztmp2 = - amp_pot(ji,jj,jk) * SIN( phi_pot(ji,jj,jk) )114 ztmp1 = ftide(jk) * amp_pot(ji,jj,jk) * COS( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 115 ztmp2 = -ftide(jk) * amp_pot(ji,jj,jk) * SIN( phi_pot(ji,jj,jk) + v0tide(jk) + utide(jk) ) 105 116 zlat = gphit(ji,jj)*rad !! latitude en radian 106 117 zlon = glamt(ji,jj)*rad !! longitude en radian … … 123 134 END SUBROUTINE tide_init_potential 124 135 136 SUBROUTINE tide_init_load 137 !!---------------------------------------------------------------------- 138 !! *** ROUTINE tide_init_load *** 139 !!---------------------------------------------------------------------- 140 INTEGER :: inum ! Logical unit of input file 141 INTEGER :: ji, jj, itide ! dummy loop indices 142 REAL(wp), POINTER, DIMENSION(:,:) :: ztr, zti !: workspace to read in tidal harmonics data 143 !!---------------------------------------------------------------------- 144 IF(lwp) THEN 145 WRITE(numout,*) 146 WRITE(numout,*) 'tide_init_load : Initialization of load potential from file' 147 WRITE(numout,*) '~~~~~~~~~~~~~~ ' 148 ENDIF 149 ! 150 CALL wrk_alloc( jpi, jpj, zti, ztr ) 151 ! 152 CALL iom_open ( cn_tide_load , inum ) 153 ! 154 DO itide = 1, nb_harmo 155 CALL iom_get ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z1', ztr(:,:) ) 156 CALL iom_get ( inum, jpdom_data,TRIM(Wave(ntide(itide))%cname_tide)//'_z2', zti(:,:) ) 157 ! 158 DO ji=1,jpi 159 DO jj=1,jpj 160 amp_load(ji,jj,itide) = SQRT( ztr(ji,jj)**2. + zti(ji,jj)**2. ) 161 phi_load(ji,jj,itide) = ATAN2(-zti(ji,jj), ztr(ji,jj) ) 162 END DO 163 END DO 164 ! 165 END DO 166 CALL iom_close( inum ) 167 ! 168 CALL wrk_dealloc( jpi, jpj, zti, ztr ) 169 ! 170 END SUBROUTINE tide_init_load 171 125 172 !!====================================================================== 126 173 END MODULE sbctide -
branches/2017/dev_r8624_AGRIF3_VVL/NEMOGCM/NEMO/OPA_SRC/SBC/tideini.F90
r7646 r8923 8 8 USE oce ! ocean dynamics and tracers variables 9 9 USE dom_oce ! ocean space and time domain 10 USE phycst ! physical constant 11 USE daymod ! cal andar10 USE phycst ! physical constants 11 USE daymod ! calendar 12 12 USE tide_mod ! 13 13 ! … … 27 27 LOGICAL , PUBLIC :: ln_tide !: 28 28 LOGICAL , PUBLIC :: ln_tide_pot !: 29 LOGICAL , PUBLIC :: ln_read_load !: 30 LOGICAL , PUBLIC :: ln_scal_load !: 29 31 LOGICAL , PUBLIC :: ln_tide_ramp !: 30 32 INTEGER , PUBLIC :: nb_harmo !: 31 33 INTEGER , PUBLIC :: kt_tide !: 32 34 REAL(wp), PUBLIC :: rdttideramp !: 33 35 REAL(wp), PUBLIC :: rn_scal_load !: 36 CHARACTER(lc), PUBLIC :: cn_tide_load !: 37 34 38 INTEGER , PUBLIC, ALLOCATABLE, DIMENSION(:) :: ntide !: 35 39 … … 49 53 INTEGER :: ios ! Local integer output status for namelist read 50 54 ! 51 NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_tide_ramp, rdttideramp, clname 55 NAMELIST/nam_tide/ln_tide, ln_tide_pot, ln_scal_load, ln_read_load, cn_tide_load, & 56 & ln_tide_ramp, rn_scal_load, rdttideramp, clname 52 57 !!---------------------------------------------------------------------- 53 58 ! … … 69 74 WRITE(numout,*) ' Namelist nam_tide' 70 75 WRITE(numout,*) ' Use tidal components : ln_tide = ', ln_tide 71 WRITE(numout,*) ' Apply astronomical potential : ln_tide_pot = ', ln_tide_pot 72 WRITE(numout,*) ' nb_harmo = ', nb_harmo 73 WRITE(numout,*) ' ln_tide_ramp = ', ln_tide_ramp 74 WRITE(numout,*) ' rdttideramp = ', rdttideramp 76 WRITE(numout,*) ' Apply astronomical potential : ln_tide_pot = ', ln_tide_pot 77 WRITE(numout,*) ' Use scalar approx. for load potential : ln_scal_load = ', ln_scal_load 78 WRITE(numout,*) ' Read load potential from file : ln_read_load = ', ln_read_load 79 WRITE(numout,*) ' Apply ramp on tides at startup : ln_tide_ramp = ', ln_tide_ramp 80 WRITE(numout,*) ' Fraction of SSH used in scal. approx. : rn_scal_load = ', rn_scal_load 81 WRITE(numout,*) ' Duration (days) of ramp : rdttideramp = ', rdttideramp 75 82 ENDIF 76 83 ELSE … … 93 100 IF( nb_harmo == 0 ) CALL ctl_stop( 'tide_init : No tidal components set in nam_tide' ) 94 101 ! 102 IF( ln_read_load.AND.(.NOT.ln_tide_pot) ) & 103 & CALL ctl_stop('ln_read_load requires ln_tide_pot') 104 IF( ln_scal_load.AND.(.NOT.ln_tide_pot) ) & 105 & CALL ctl_stop('ln_scal_load requires ln_tide_pot') 106 IF( ln_scal_load.AND.ln_read_load ) & 107 & CALL ctl_stop('Choose between ln_scal_load and ln_read_load') 95 108 IF( ln_tide_ramp.AND.((nitend-nit000+1)*rdt/rday < rdttideramp) ) & 96 109 & CALL ctl_stop('rdttideramp must be lower than run duration') … … 112 125 kt_tide = nit000 113 126 ! 127 IF (.NOT.ln_scal_load ) rn_scal_load = 0._wp 128 ! 114 129 END SUBROUTINE tide_init 115 130
Note: See TracChangeset
for help on using the changeset viewer.