Changeset 15156 for NEMO/branches/UKMO/NEMO_4.0.4_idealised_ovf
- Timestamp:
- 2021-07-28T18:29:17+02:00 (3 years ago)
- Location:
- NEMO/branches/UKMO/NEMO_4.0.4_idealised_ovf/src/OCE
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/UKMO/NEMO_4.0.4_idealised_ovf/src/OCE/DOM/dtatsd.F90
r14075 r15156 32 32 LOGICAL , PUBLIC :: ln_tsd_init !: T & S data flag 33 33 LOGICAL , PUBLIC :: ln_tsd_dmp !: internal damping toward input data flag 34 34 ! 35 ! !!* parameters for the idealised ovf experiment 36 INTEGER , PUBLIC :: nn_ovf_loc !: 0 = DS (Denmark Strait) 37 !: 1 = IFR (Iceland-Faroe Ridge) 38 !: 2 = BOTH 39 REAL(wp), PUBLIC :: rn_tem_env !: Environment ocean temperature 40 REAL(wp), PUBLIC :: rn_tem_ovf !: Temperature of the cold overflow 41 REAL(wp), PUBLIC :: rn_sal_env !: Environment ocean salinity 42 REAL(wp), PUBLIC :: rn_sal_ovf !: Salinity of the cold overflow 43 ! 44 ! 35 45 TYPE(FLD), ALLOCATABLE, DIMENSION(:) :: sf_tsd ! structure of input SST (file informations, fields read) 36 46 … … 59 69 TYPE(FLD_N) :: sn_tem, sn_sal 60 70 !! 61 NAMELIST/namtsd/ ln_tsd_init, ln_tsd_dmp, cn_dir, sn_tem, sn_sal 71 NAMELIST/namtsd/ ln_tsd_init, ln_tsd_dmp, cn_dir, sn_tem, sn_sal, nn_ovf_loc, & 72 & rn_tem_env , rn_tem_ovf, rn_sal_env, rn_sal_ovf 62 73 !!---------------------------------------------------------------------- 63 74 ! … … 87 98 WRITE(numout,*) ' ===>> T & S data not used' 88 99 ENDIF 100 WRITE(numout,*) 101 WRITE(numout,*) 'dta_tsd_init : Idealised North Atlantic overflow parameters' 102 WRITE(numout,*) '~~~~~~~~~~~~ ' 103 WRITE(numout,*) ' Namelist namtsd' 104 WRITE(numout,*) ' Area of the overflow nn_ovf_loc = ', nn_ovf_loc 105 WRITE(numout,*) ' Ambient ocean T rn_tem_env = ', rn_tem_env 106 WRITE(numout,*) ' Ambient ocean S rn_sal_env = ', rn_sal_env 107 WRITE(numout,*) ' Overflow T rn_tem_ovf = ', rn_tem_ovf 108 WRITE(numout,*) ' Overflow S rn_sal_ovf = ', rn_sal_ovf 89 109 ENDIF 90 110 ! -
NEMO/branches/UKMO/NEMO_4.0.4_idealised_ovf/src/OCE/USR/usrdef_istate.F90
r14075 r15156 3 3 !! *** MODULE usrdef_istate *** 4 4 !! 5 !! === GYRE configuration===5 !! === NORTH ATALNTIC ORCA025 IDEALISED OVERFLOWS === 6 6 !! 7 7 !! User defined : set the initial state of a user configuration 8 8 !!====================================================================== 9 !! History : 4.0 ! 2016-03 (S. Flavoni) Original code 9 !! History : 4.0 ! 2016-03 (S. Flavoni) Original code 10 !! 4.0.4 ! 2021-07 (D. Bruciaferri) Overflows code 10 11 !!---------------------------------------------------------------------- 11 12 … … 15 16 USE par_oce ! ocean space and time domain 16 17 USE phycst ! physical constants 18 USE dom_oce 19 USE dtatsd 17 20 ! 18 21 USE in_out_manager ! I/O manager … … 36 39 !! 37 40 !! ** Purpose : Initialization of the dynamics and tracers 38 !! Here GYRE configuration example : (double gyre with rotated domain)41 !! North Atlantic idealised overflows 39 42 !! 40 43 !! ** Method : - set temprature field … … 48 51 REAL(wp), DIMENSION(jpi,jpj) , INTENT( out) :: pssh ! sea-surface height 49 52 ! 50 INTEGER :: ji, jj, jk ! dummy loop indices 53 INTEGER :: ji, jj, kk, num_pnt, ierr0, ierr1 54 INTEGER, ALLOCATABLE , DIMENSION(:) :: ovf_ji, ovf_jj ! arrays for overflow 51 55 !!---------------------------------------------------------------------- 52 56 ! 53 57 IF(lwp) WRITE(numout,*) 54 58 IF(lwp) WRITE(numout,*) 'usr_def_istate : analytical definition of initial state ' 55 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ Ocean at rest, with an horizontally uniform T and S profiles' 59 IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ Ocean at rest, with a 3D uniform T and S' 60 IF(lwp) WRITE(numout,*) ' and cold dense blobs in the DS and/or IFR' 56 61 ! 57 62 pu (:,:,:) = 0._wp ! ocean at rest … … 59 64 pssh(:,:) = 0._wp 60 65 ! 61 DO jk = 1, jpk ! horizontally uniform T & S profiles 62 DO jj = 1, jpj 63 DO ji = 1, jpi 64 pts(ji,jj,jk,jp_tem) = ( ( 16. - 12. * TANH( (pdept(ji,jj,jk) - 400) / 700 ) ) & 65 & * (-TANH( (500. - pdept(ji,jj,jk)) / 150. ) + 1.) / 2. & 66 & + ( 15. * ( 1. - TANH( (pdept(ji,jj,jk)-50.) / 1500.) ) & 67 & - 1.4 * TANH((pdept(ji,jj,jk)-100.) / 100.) & 68 & + 7. * (1500. - pdept(ji,jj,jk) ) / 1500.) & 69 & * (-TANH( (pdept(ji,jj,jk) - 500.) / 150.) + 1.) / 2. ) * ptmask(ji,jj,jk) 66 ! 3D uniform T & S profiles 67 pts(:, :, :, jp_tem) = rn_tem_env 68 pts(:, :, :, jp_sal) = rn_sal_env 69 ! 70 SELECT CASE(nn_ovf_loc) 70 71 71 pts(ji,jj,jk,jp_sal) = ( ( 36.25 - 1.13 * TANH( (pdept(ji,jj,jk) - 305) / 460 ) ) & 72 & * (-TANH((500. - pdept(ji,jj,jk)) / 150.) + 1.) / 2 & 73 & + ( 35.55 + 1.25 * (5000. - pdept(ji,jj,jk)) / 5000. & 74 & - 1.62 * TANH( (pdept(ji,jj,jk) - 60. ) / 650. ) & 75 & + 0.2 * TANH( (pdept(ji,jj,jk) - 35. ) / 100. ) & 76 & + 0.2 * TANH( (pdept(ji,jj,jk) - 1000.) / 5000.) ) & 77 & * (-TANH( (pdept(ji,jj,jk) - 500.) / 150.) + 1.) / 2 ) * ptmask(ji,jj,jk) 78 END DO 79 END DO 80 END DO 72 CASE(0) ! Denmark Strait 73 num_pnt = 17 74 ALLOCATE( ovf_ji(num_pnt), STAT=ierr0 ) 75 ALLOCATE( ovf_jj(num_pnt), STAT=ierr1 ) 76 IF( ierr0 + ierr1 > 0 ) THEN 77 CALL ctl_stop( 'dta_tsd : unable to allocate T & S data arrays' ); RETURN 78 ENDIF 79 ovf_ji = (/ & 80 & 1045, 1046, & 81 & 1044, 1045, 1046, & 82 & 1043, 1044, 1045, & 83 & 1042, 1043, 1044, & 84 & 1041, 1042, 1043, & 85 & 1040, 1041, 1042 & 86 & /) 87 ovf_jj = (/ & 88 & 1020, 1020, & 89 & 1019, 1019, 1019, & 90 & 1018, 1018, 1018, & 91 & 1017, 1017, 1017, & 92 & 1016, 1016, 1016, & 93 & 1015, 1015, 1015 & 94 & /) 95 END SELECT 96 ! 97 IF( lk_mpp ) CALL mppsync 98 DO kk = 1, num_pnt 99 ji = ovf_ji(kk) 100 jj = ovf_jj(kk) 101 IF ((mi0(ji)>1 .AND. mi0(ji)<jpi) .AND. (mj0(jj)>1 .AND. mj0(jj)<jpj)) THEN 102 pts(mi0(ji), mj0(jj), :, jp_tem) = rn_tem_ovf 103 pts(mi0(ji), mj0(jj), :, jp_sal) = rn_sal_ovf 104 ENDIF 105 END DO 81 106 ! 82 107 END SUBROUTINE usr_def_istate
Note: See TracChangeset
for help on using the changeset viewer.