Changeset 10970
- Timestamp:
- 2019-05-13T14:02:19+02:00 (6 years ago)
- Location:
- NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsfld.F90
r10425 r10970 40 40 CONTAINS 41 41 42 SUBROUTINE crs_fld( kt )42 SUBROUTINE crs_fld( kt, Kmm ) 43 43 !!--------------------------------------------------------------------- 44 44 !! *** ROUTINE crs_fld *** … … 54 54 !!---------------------------------------------------------------------- 55 55 INTEGER, INTENT(in) :: kt ! ocean time-step index 56 INTEGER, INTENT(in) :: Kmm ! time level index 56 57 ! 57 58 INTEGER :: ji, jj, jk ! dummy loop indices … … 67 68 68 69 ! Depth work arrrays 69 ze3t(:,:,:) = e3t _n(:,:,:)70 ze3u(:,:,:) = e3u _n(:,:,:)71 ze3v(:,:,:) = e3v _n(:,:,:)72 ze3w(:,:,:) = e3w _n(:,:,:)70 ze3t(:,:,:) = e3t(:,:,:,Kmm) 71 ze3u(:,:,:) = e3u(:,:,:,Kmm) 72 ze3v(:,:,:) = e3v(:,:,:,Kmm) 73 ze3w(:,:,:) = e3w(:,:,:,Kmm) 73 74 74 75 IF( kt == nit000 ) THEN … … 96 97 97 98 ! Temperature 98 zt(:,:,:) = ts n(:,:,:,jp_tem) ; zt_crs(:,:,:) = 0._wp99 zt(:,:,:) = ts(:,:,:,jp_tem,Kmm) ; zt_crs(:,:,:) = 0._wp 99 100 CALL crs_dom_ope( zt, 'VOL', 'T', tmask, zt_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 ) 100 101 tsn_crs(:,:,:,jp_tem) = zt_crs(:,:,:) … … 105 106 106 107 ! Salinity 107 zs(:,:,:) = ts n(:,:,:,jp_sal) ; zs_crs(:,:,:) = 0._wp108 zs(:,:,:) = ts(:,:,:,jp_sal,Kmm) ; zs_crs(:,:,:) = 0._wp 108 109 CALL crs_dom_ope( zs, 'VOL', 'T', tmask, zs_crs, p_e12=e1e2t, p_e3=ze3t, psgn=1.0 ) 109 110 tsn_crs(:,:,:,jp_sal) = zt_crs(:,:,:) … … 113 114 114 115 ! U-velocity 115 CALL crs_dom_ope( u n, 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 )116 CALL crs_dom_ope( uu(:,:,:,Kmm), 'SUM', 'U', umask, un_crs, p_e12=e2u, p_e3=ze3u, p_surf_crs=e2e3u_msk, psgn=-1.0 ) 116 117 ! 117 118 zt(:,:,:) = 0._wp ; zs(:,:,:) = 0._wp ; zt_crs(:,:,:) = 0._wp ; zs_crs(:,:,:) = 0._wp … … 119 120 DO jj = 2, jpjm1 120 121 DO ji = 2, jpim1 121 zt(ji,jj,jk) = u n(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji+1,jj,jk,jp_tem) )122 zs(ji,jj,jk) = u n(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji+1,jj,jk,jp_sal) )122 zt(ji,jj,jk) = uu(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji+1,jj,jk,jp_tem,Kmm) ) 123 zs(ji,jj,jk) = uu(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji+1,jj,jk,jp_sal,Kmm) ) 123 124 END DO 124 125 END DO … … 132 133 133 134 ! V-velocity 134 CALL crs_dom_ope( v n, 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 )135 CALL crs_dom_ope( vv(:,:,:,Kmm), 'SUM', 'V', vmask, vn_crs, p_e12=e1v, p_e3=ze3v, p_surf_crs=e1e3v_msk, psgn=-1.0 ) 135 136 ! 136 137 zt(:,:,:) = 0._wp ; zs(:,:,:) = 0._wp ; zt_crs(:,:,:) = 0._wp ; zs_crs(:,:,:) = 0._wp … … 138 139 DO jj = 2, jpjm1 139 140 DO ji = 2, jpim1 140 zt(ji,jj,jk) = v n(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_tem) + tsn(ji,jj+1,jk,jp_tem) )141 zs(ji,jj,jk) = v n(ji,jj,jk) * 0.5 * ( tsn(ji,jj,jk,jp_sal) + tsn(ji,jj+1,jk,jp_sal) )141 zt(ji,jj,jk) = vv(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_tem,Kmm) + ts(ji,jj+1,jk,jp_tem,Kmm) ) 142 zs(ji,jj,jk) = vv(ji,jj,jk,Kmm) * 0.5 * ( ts(ji,jj,jk,jp_sal,Kmm) + ts(ji,jj+1,jk,jp_sal,Kmm) ) 142 143 END DO 143 144 END DO … … 155 156 DO jj = 2, jpjm1 156 157 DO ji = fs_2, fs_jpim1 ! vector opt. 157 zztmp = r1_e1e2t(ji,jj) / e3t _n(ji,jj,jk)158 zztmp = r1_e1e2t(ji,jj) / e3t(ji,jj,jk,Kmm) 158 159 z3d(ji,jj,jk) = 0.25_wp * zztmp * ( & 159 & u n(ji-1,jj,jk)**2 * e2u(ji-1,jj) * e3u_n(ji-1,jj,jk) &160 & + u n(ji ,jj,jk)**2 * e2u(ji ,jj) * e3u_n(ji ,jj,jk) &161 & + v n(ji,jj-1,jk)**2 * e1v(ji,jj-1) * e3v_n(ji,jj-1,jk) &162 & + v n(ji,jj ,jk)**2 * e1v(ji,jj ) * e3v_n(ji,jj ,jk) )160 & uu(ji-1,jj,jk,Kmm)**2 * e2u(ji-1,jj) * e3u(ji-1,jj,jk,Kmm) & 161 & + uu(ji ,jj,jk,Kmm)**2 * e2u(ji ,jj) * e3u(ji ,jj,jk,Kmm) & 162 & + vv(ji,jj-1,jk,Kmm)**2 * e1v(ji,jj-1) * e3v(ji,jj-1,jk,Kmm) & 163 & + vv(ji,jj ,jk,Kmm)**2 * e1v(ji,jj ) * e3v(ji,jj ,jk,Kmm) ) 163 164 END DO 164 165 END DO … … 191 192 ! W-velocity 192 193 IF( ln_crs_wn ) THEN 193 CALL crs_dom_ope( w n, 'SUM', 'W', tmask, wn_crs, p_e12=e1e2t, p_surf_crs=e1e2w_msk, psgn=1.0 )194 ! CALL crs_dom_ope( w n, 'VOL', 'W', tmask, wn_crs, p_e12=e1e2t, p_e3=ze3w )194 CALL crs_dom_ope( ww, 'SUM', 'W', tmask, wn_crs, p_e12=e1e2t, p_surf_crs=e1e2w_msk, psgn=1.0 ) 195 ! CALL crs_dom_ope( ww, 'VOL', 'W', tmask, wn_crs, p_e12=e1e2t, p_e3=ze3w ) 195 196 ELSE 196 197 wn_crs(:,:,jpk) = 0._wp … … 219 220 220 221 ! sbc fields 221 CALL crs_dom_ope( ssh n, 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=ze3t , psgn=1.0 )222 CALL crs_dom_ope( ssh(:,:,Kmm) , 'VOL', 'T', tmask, sshn_crs , p_e12=e1e2t, p_e3=ze3t , psgn=1.0 ) 222 223 CALL crs_dom_ope( utau , 'SUM', 'U', umask, utau_crs , p_e12=e2u , p_surf_crs=e2u_crs , psgn=1.0 ) 223 224 CALL crs_dom_ope( vtau , 'SUM', 'V', vmask, vtau_crs , p_e12=e1v , p_surf_crs=e1v_crs , psgn=1.0 ) -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/CRS/crsini.F90
r10068 r10970 35 35 CONTAINS 36 36 37 SUBROUTINE crs_init 37 SUBROUTINE crs_init( Kmm ) 38 38 !!------------------------------------------------------------------- 39 39 !! *** SUBROUTINE crs_init … … 68 68 !! - Read in pertinent data ? 69 69 !!------------------------------------------------------------------- 70 INTEGER, INTENT(in) :: Kmm ! time level index 71 ! 70 72 INTEGER :: ji,jj,jk ! dummy indices 71 73 INTEGER :: ierr ! allocation error status … … 98 100 WRITE(numout,*) ' create a mesh file (=T) ln_msh_crs = ', ln_msh_crs 99 101 WRITE(numout,*) ' type of Kz coarsening (0,1,2) nn_crs_kz = ', nn_crs_kz 100 WRITE(numout,*) ' w n coarsened or computed using hdivnln_crs_wn = ', ln_crs_wn102 WRITE(numout,*) ' ww coarsened or computed using hdiv ln_crs_wn = ', ln_crs_wn 101 103 ENDIF 102 104 … … 174 176 175 177 ! 176 ze3t(:,:,:) = e3t _n(:,:,:)177 ze3u(:,:,:) = e3u _n(:,:,:)178 ze3v(:,:,:) = e3v _n(:,:,:)179 ze3w(:,:,:) = e3w _n(:,:,:)178 ze3t(:,:,:) = e3t(:,:,:,Kmm) 179 ze3u(:,:,:) = e3u(:,:,:,Kmm) 180 ze3v(:,:,:) = e3v(:,:,:,Kmm) 181 ze3w(:,:,:) = e3w(:,:,:,Kmm) 180 182 181 183 ! 3.d.2 Surfaces -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flo4rk.F90
r10068 r10970 35 35 CONTAINS 36 36 37 SUBROUTINE flo_4rk( kt )37 SUBROUTINE flo_4rk( kt, Kbb, Kmm ) 38 38 !!---------------------------------------------------------------------- 39 39 !! *** ROUTINE flo_4rk *** … … 47 47 !! floats and the grid defined on the domain. 48 48 !!---------------------------------------------------------------------- 49 INTEGER, INTENT(in) :: kt ! ocean time-step index 49 INTEGER, INTENT(in) :: kt ! ocean time-step index 50 INTEGER, INTENT(in) :: Kbb, Kmm ! ocean time level indices 50 51 !! 51 52 INTEGER :: jfl, jind ! dummy loop indices … … 127 128 128 129 ! for each step we compute the compute the velocity with Lagrange interpolation 129 CALL flo_interp( zgifl, zgjfl, zgkfl, zufl, zvfl, zwfl, jind )130 CALL flo_interp( Kbb, Kmm, zgifl, zgjfl, zgkfl, zufl, zvfl, zwfl, jind ) 130 131 131 132 ! computation of Runge-Kutta factor … … 155 156 156 157 157 SUBROUTINE flo_interp( pxt , pyt , pzt , & 158 SUBROUTINE flo_interp( Kbb, Kmm, & 159 & pxt , pyt , pzt , & 158 160 & pufl, pvfl, pwfl, ki ) 159 161 !!---------------------------------------------------------------------- … … 167 169 !! integrated with RK method. 168 170 !!---------------------------------------------------------------------- 171 INTEGER , INTENT(in ) :: Kbb, Kmm ! ocean time level indices 169 172 REAL(wp) , DIMENSION(jpnfl), INTENT(in ) :: pxt , pyt , pzt ! position of the float 170 173 REAL(wp) , DIMENSION(jpnfl), INTENT( out) :: pufl, pvfl, pwfl ! velocity at this position … … 248 251 DO jind3 = 1, 4 249 252 ztufl(jfl,jind1,jind2,jind3) = & 250 & ( tcoef1(ki) * u b(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) + &251 & tcoef2(ki) * u n(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3)) ) &253 & ( tcoef1(ki) * uu(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3),Kbb) + & 254 & tcoef2(ki) * uu(iidu(jfl,jind1),ijdu(jfl,jind2),ikdu(jfl,jind3),Kmm) ) & 252 255 & / e1u(iidu(jfl,jind1),ijdu(jfl,jind2)) 253 256 END DO … … 332 335 DO jind3 = 1 ,4 333 336 ztvfl(jfl,jind1,jind2,jind3)= & 334 & ( tcoef1(ki) * v b(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3)) + &335 & tcoef2(ki) * v n(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3)) ) &337 & ( tcoef1(ki) * vv(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3),Kbb) + & 338 & tcoef2(ki) * vv(iidv(jfl,jind1),ijdv(jfl,jind2),ikdv(jfl,jind3),Kmm) ) & 336 339 & / e2v(iidv(jfl,jind1),ijdv(jfl,jind2)) 337 340 END DO … … 424 427 ztwfl(jfl,jind1,jind2,jind3)= & 425 428 & ( tcoef1(ki) * wb(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3))+ & 426 & tcoef2(ki) * w n(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3)) ) &427 & / e3w _n(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3))429 & tcoef2(ki) * ww(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3)) ) & 430 & / e3w(iidw(jfl,jind1),ijdw(jfl,jind2),ikdw(jfl,jind3),Kmm) 428 431 END DO 429 432 END DO -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floats.F90
r10068 r10970 39 39 CONTAINS 40 40 41 SUBROUTINE flo_stp( kt )41 SUBROUTINE flo_stp( kt, Kbb, Kmm ) 42 42 !!---------------------------------------------------------------------- 43 43 !! *** ROUTINE flo_stp *** … … 50 50 !! if ln_flork4 =T 51 51 !!---------------------------------------------------------------------- 52 INTEGER, INTENT( in ) :: kt ! ocean time step 52 INTEGER, INTENT( in ) :: kt ! ocean time step 53 INTEGER, INTENT( in ) :: Kbb, Kmm ! ocean time level indices 53 54 !!---------------------------------------------------------------------- 54 55 ! 55 56 IF( ln_timing ) CALL timing_start('flo_stp') 56 57 ! 57 IF( ln_flork4 ) THEN ; CALL flo_4rk( kt )! Trajectories using a 4th order Runge Kutta scheme58 ELSE ; CALL flo_blk( kt )! Trajectories using Blanke' algorithme58 IF( ln_flork4 ) THEN ; CALL flo_4rk( kt, Kbb, Kmm ) ! Trajectories using a 4th order Runge Kutta scheme 59 ELSE ; CALL flo_blk( kt, Kbb, Kmm ) ! Trajectories using Blanke' algorithme 59 60 ENDIF 60 61 ! 61 62 IF( lk_mpp ) CALL mppsync ! synchronization of all the processor 62 63 ! 63 CALL flo_wri( kt )! trajectories ouput64 CALL flo_wri( kt, Kmm ) ! trajectories ouput 64 65 ! 65 66 CALL flo_rst( kt ) ! trajectories restart 66 67 ! 67 wb(:,:,:) = w n(:,:,:) ! Save the old vertical velocity field68 wb(:,:,:) = ww(:,:,:) ! Save the old vertical velocity field 68 69 ! 69 70 IF( ln_timing ) CALL timing_stop('flo_stp') … … 72 73 73 74 74 SUBROUTINE flo_init 75 SUBROUTINE flo_init( Kmm ) 75 76 !!---------------------------------------------------------------- 76 77 !! *** ROUTINE flo_init *** … … 78 79 !! ** Purpose : Read the namelist of floats 79 80 !!---------------------------------------------------------------------- 81 INTEGER, INTENT(in) :: Kmm ! ocean time level index 82 ! 80 83 INTEGER :: jfl 81 84 INTEGER :: ios ! Local integer output status for namelist read … … 130 133 END DO 131 134 ! 132 CALL flo_dom 135 CALL flo_dom( Kmm ) ! compute/read initial position of floats 133 136 ! 134 wb(:,:,:) = w n(:,:,:) ! set wb for computation of floats trajectories at the first time step137 wb(:,:,:) = ww(:,:,:) ! set wb for computation of floats trajectories at the first time step 135 138 ! 136 139 END SUBROUTINE flo_init … … 141 144 !!---------------------------------------------------------------------- 142 145 CONTAINS 143 SUBROUTINE flo_stp( kt )! Empty routine146 SUBROUTINE flo_stp( kt, Kbb, Kmm ) ! Empty routine 144 147 IMPLICIT NONE 145 148 INTEGER, INTENT( in ) :: kt 149 INTEGER, INTENT( in ) :: Kbb, Kmm 146 150 WRITE(*,*) 'flo_stp: You should not have seen this print! error?', kt 147 151 END SUBROUTINE flo_stp 148 SUBROUTINE flo_init ! Empty routine152 SUBROUTINE flo_init( Kmm ) ! Empty routine 149 153 IMPLICIT NONE 154 INTEGER, INTENT( in ) :: Kmm 150 155 END SUBROUTINE flo_init 151 156 #endif -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/floblk.F90
r10425 r10970 29 29 CONTAINS 30 30 31 SUBROUTINE flo_blk( kt )31 SUBROUTINE flo_blk( kt, Kbb, Kmm ) 32 32 !!--------------------------------------------------------------------- 33 33 !! *** ROUTINE flo_blk *** … … 40 40 !! of the floats and the grid defined on the domain. 41 41 !!---------------------------------------------------------------------- 42 INTEGER, INTENT( in ) :: kt ! ocean time step 42 INTEGER, INTENT( in ) :: kt ! ocean time step 43 INTEGER, INTENT( in ) :: Kbb, Kmm ! ocean time level indices 43 44 !! 44 45 INTEGER :: jfl ! dummy loop arguments … … 112 113 ! compute the transport across the mesh where the float is. 113 114 !!bug (gm) change e3t into e3. but never checked 114 zsurfx(1) = e2u(iiloc(jfl)-1,ijloc(jfl) ) * e3u _n(iiloc(jfl)-1,ijloc(jfl) ,-ikl(jfl))115 zsurfx(2) = e2u(iiloc(jfl) ,ijloc(jfl) ) * e3u _n(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl))116 zsurfy(1) = e1v(iiloc(jfl) ,ijloc(jfl)-1) * e3v _n(iiloc(jfl) ,ijloc(jfl)-1,-ikl(jfl))117 zsurfy(2) = e1v(iiloc(jfl) ,ijloc(jfl) ) * e3v _n(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl))115 zsurfx(1) = e2u(iiloc(jfl)-1,ijloc(jfl) ) * e3u(iiloc(jfl)-1,ijloc(jfl) ,-ikl(jfl),Kmm) 116 zsurfx(2) = e2u(iiloc(jfl) ,ijloc(jfl) ) * e3u(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 117 zsurfy(1) = e1v(iiloc(jfl) ,ijloc(jfl)-1) * e3v(iiloc(jfl) ,ijloc(jfl)-1,-ikl(jfl),Kmm) 118 zsurfy(2) = e1v(iiloc(jfl) ,ijloc(jfl) ) * e3v(iiloc(jfl) ,ijloc(jfl) ,-ikl(jfl),Kmm) 118 119 119 120 ! for a isobar float zsurfz is put to zero. The vertical velocity will be zero too. 120 121 zsurfz = e1e2t(iiloc(jfl),ijloc(jfl)) 121 zvol = zsurfz * e3t _n(iiloc(jfl),ijloc(jfl),-ikl(jfl))122 zvol = zsurfz * e3t(iiloc(jfl),ijloc(jfl),-ikl(jfl),Kmm) 122 123 123 124 ! 124 zuinfl =( u b(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(1)125 zuoutfl=( u b(iiloc(jfl) ,ijloc(jfl),-ikl(jfl)) + un(iiloc(jfl) ,ijloc(jfl),-ikl(jfl)) )/2.*zsurfx(2)126 zvinfl =( v b(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) + vn(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl)) )/2.*zsurfy(1)127 zvoutfl=( v b(iiloc(jfl),ijloc(jfl) ,-ikl(jfl)) + vn(iiloc(jfl),ijloc(jfl) ,-ikl(jfl)) )/2.*zsurfy(2)125 zuinfl =( uu(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl),Kbb) + uu(iiloc(jfl)-1,ijloc(jfl),-ikl(jfl),Kmm) )/2.*zsurfx(1) 126 zuoutfl=( uu(iiloc(jfl) ,ijloc(jfl),-ikl(jfl),Kbb) + uu(iiloc(jfl) ,ijloc(jfl),-ikl(jfl),Kmm) )/2.*zsurfx(2) 127 zvinfl =( vv(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl),Kbb) + vv(iiloc(jfl),ijloc(jfl)-1,-ikl(jfl),Kmm) )/2.*zsurfy(1) 128 zvoutfl=( vv(iiloc(jfl),ijloc(jfl) ,-ikl(jfl),Kbb) + vv(iiloc(jfl),ijloc(jfl) ,-ikl(jfl),Kmm) )/2.*zsurfy(2) 128 129 zwinfl =-(wb(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) & 129 & + w n(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. * zsurfz*nisobfl(jfl)130 & + ww(iiloc(jfl),ijloc(jfl),-(ikl(jfl)-1)) )/2. * zsurfz*nisobfl(jfl) 130 131 zwoutfl=-(wb(iiloc(jfl),ijloc(jfl),- ikl(jfl) ) & 131 & + w n(iiloc(jfl),ijloc(jfl),- ikl(jfl) ) )/2. * zsurfz*nisobfl(jfl)132 & + ww(iiloc(jfl),ijloc(jfl),- ikl(jfl) ) )/2. * zsurfz*nisobfl(jfl) 132 133 133 134 ! interpolation of velocity field on the float initial position -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flodom.F90
r10425 r10970 44 44 CONTAINS 45 45 46 SUBROUTINE flo_dom 46 SUBROUTINE flo_dom( Kmm ) 47 47 !! --------------------------------------------------------------------- 48 48 !! *** ROUTINE flo_dom *** … … 53 53 !! the longitude (degree) and the depth (m). 54 54 !!---------------------------------------------------------------------- 55 INTEGER, INTENT(in) :: Kmm ! ocean time level index 56 ! 55 57 INTEGER :: jfl ! dummy loop 56 58 INTEGER :: inum ! logical unit for file read … … 94 96 CALL flo_add_new_ariane_floats(jpnrstflo+1,jpnfl) 95 97 ELSE !Add new floats with long/lat convention 96 CALL flo_add_new_floats( jpnrstflo+1,jpnfl)98 CALL flo_add_new_floats(Kmm,jpnrstflo+1,jpnfl) 97 99 ENDIF 98 100 ENDIF … … 106 108 CALL flo_add_new_ariane_floats(1,jpnfl) 107 109 ELSE !Add new floats with long/lat convention 108 CALL flo_add_new_floats( 1,jpnfl)110 CALL flo_add_new_floats(Kmm,1,jpnfl) 109 111 ENDIF 110 112 … … 113 115 END SUBROUTINE flo_dom 114 116 115 SUBROUTINE flo_add_new_floats( kfl_start, kfl_end)117 SUBROUTINE flo_add_new_floats(Kmm, kfl_start, kfl_end) 116 118 !! ------------------------------------------------------------- 117 119 !! *** SUBROUTINE add_new_arianefloats *** … … 128 130 !! ** Method : 129 131 !!---------------------------------------------------------------------- 132 INTEGER, INTENT(in) :: Kmm 130 133 INTEGER, INTENT(in) :: kfl_start, kfl_end 131 134 !! … … 174 177 ihtest(jfl) = ihtest(jfl)+1 175 178 DO jk = 1, jpk-1 176 IF( (gdepw _n(ji,jj,jk) <= flzz(jfl)) .AND. (gdepw_n(ji,jj,jk+1) > flzz(jfl)) ) THEN179 IF( (gdepw(ji,jj,jk,Kmm) <= flzz(jfl)) .AND. (gdepw(ji,jj,jk+1,Kmm) > flzz(jfl)) ) THEN 177 180 ikmfl(jfl) = jk 178 181 ivtest(jfl) = ivtest(jfl) + 1 … … 236 239 zgifl(jfl)= (iimfl(jfl)-0.5) + zdxab/e1u(iimfl(jfl)-1,ijmfl(jfl)) + (mig(1)-1) 237 240 zgjfl(jfl)= (ijmfl(jfl)-0.5) + zdyad/e2v(iimfl(jfl),ijmfl(jfl)-1) + (mjg(1)-1) 238 zgkfl(jfl) = (( gdepw _n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1) - flzz(jfl) )* ikmfl(jfl)) &239 & / ( gdepw _n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1) &240 & - gdepw _n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)) ) &241 & + (( flzz(jfl)-gdepw _n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)) ) *(ikmfl(jfl)+1)) &242 & / ( gdepw _n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1) &243 & - gdepw _n(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)) )241 zgkfl(jfl) = (( gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1,Kmm) - flzz(jfl) )* ikmfl(jfl)) & 242 & / ( gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1,Kmm) & 243 & - gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl) ,Kmm) ) & 244 & + (( flzz(jfl)-gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl),Kmm) ) *(ikmfl(jfl)+1)) & 245 & / ( gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl)+1,Kmm) & 246 & - gdepw(iimfl(jfl),ijmfl(jfl),ikmfl(jfl),Kmm) ) 244 247 ELSE 245 248 zgifl(jfl) = 0.e0 -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/FLO/flowri.F90
r10425 r10970 55 55 END FUNCTION flo_wri_alloc 56 56 57 SUBROUTINE flo_wri( kt )57 SUBROUTINE flo_wri( kt, Kmm ) 58 58 !!--------------------------------------------------------------------- 59 59 !! *** ROUTINE flo_wri *** … … 68 68 !!---------------------------------------------------------------------- 69 69 !! * Arguments 70 INTEGER :: kt ! time step 70 INTEGER, INTENT(in) :: kt ! time step 71 INTEGER, INTENT(in) :: Kmm ! time level index 71 72 72 73 !! * Local declarations … … 120 121 zlon(jfl) = (1.-zafl)*(1.-zbfl)*glamt(iafloc ,ibfloc ) + (1.-zafl) * zbfl * glamt(iafloc ,ib1floc) & 121 122 + zafl *(1.-zbfl)*glamt(ia1floc,ibfloc ) + zafl * zbfl * glamt(ia1floc,ib1floc) 122 zdep(jfl) = (1.-zcfl)*gdepw _n(iafloc,ibfloc,icfl ) + zcfl * gdepw_n(iafloc,ibfloc,ic1fl)123 zdep(jfl) = (1.-zcfl)*gdepw(iafloc,ibfloc,icfl ,Kmm) + zcfl * gdepw(iafloc,ibfloc,ic1fl,Kmm) 123 124 124 125 !save temperature, salinity and density at this position 125 ztem(jfl) = ts n(iafloc,ibfloc,icfl,jp_tem)126 zsal (jfl) = ts n(iafloc,ibfloc,icfl,jp_sal)126 ztem(jfl) = ts(iafloc,ibfloc,icfl,jp_tem,Kmm) 127 zsal (jfl) = ts(iafloc,ibfloc,icfl,jp_sal,Kmm) 127 128 zrho (jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rau0 128 129 … … 141 142 zlon(jfl) = (1.-zafl)*(1.-zbfl)*glamt(iafloc ,ibfloc ) + (1.-zafl) * zbfl * glamt(iafloc ,ib1floc) & 142 143 + zafl *(1.-zbfl)*glamt(ia1floc,ibfloc ) + zafl * zbfl * glamt(ia1floc,ib1floc) 143 zdep(jfl) = (1.-zcfl)*gdepw _n(iafloc,ibfloc,icfl ) + zcfl * gdepw_n(iafloc,ibfloc,ic1fl)144 145 ztem(jfl) = ts n(iafloc,ibfloc,icfl,jp_tem)146 zsal(jfl) = ts n(iafloc,ibfloc,icfl,jp_sal)144 zdep(jfl) = (1.-zcfl)*gdepw(iafloc,ibfloc,icfl ,Kmm) + zcfl * gdepw(iafloc,ibfloc,ic1fl,Kmm) 145 146 ztem(jfl) = ts(iafloc,ibfloc,icfl,jp_tem,Kmm) 147 zsal(jfl) = ts(iafloc,ibfloc,icfl,jp_sal,Kmm) 147 148 zrho(jfl) = (rhd(iafloc,ibfloc,icfl)+1)*rau0 148 149 -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/nemogcm.F90
r10969 r10970 421 421 CALL wad_init ! Wetting and drying options 422 422 CALL dom_init("OPA") ! Domain 423 IF( ln_crs ) CALL crs_init 423 IF( ln_crs ) CALL crs_init( Nnn ) ! coarsened grid: domain initialization 424 424 IF( ln_ctl ) CALL prt_ctl_init ! Print control 425 425 … … 485 485 486 486 ! ! Diagnostics 487 IF( lk_floats ) CALL flo_init ! drifting Floats487 IF( lk_floats ) CALL flo_init( Nnn ) ! drifting Floats 488 488 IF( ln_diacfl ) CALL dia_cfl_init ! Initialise CFL diagnostics 489 489 CALL dia_ptr_init ! Poleward TRansports initialization -
NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/step.F90
r10969 r10970 218 218 ! diagnostics and outputs 219 219 !<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 220 IF( lk_floats ) CALL flo_stp ( kstp )! drifting Floats221 IF( ln_diacfl ) CALL dia_cfl ( kstp, Nnn ) ! Courant number diagnostics222 IF( lk_diahth ) CALL dia_hth ( kstp, Nnn ) ! Thermocline depth (20 degres isotherm depth)223 IF( lk_diadct ) CALL dia_dct ( kstp, Nnn ) ! Transports224 CALL dia_ar5 ( kstp, Nnn ) ! ar5 diag225 IF( lk_diaharm ) CALL dia_harm( kstp, Nnn ) ! Tidal harmonic analysis226 CALL dia_wri ( kstp, Nnn ) ! ocean model: outputs227 ! 228 IF( ln_crs ) CALL crs_fld ( kstp )! ocean model: online field coarsening & output220 IF( lk_floats ) CALL flo_stp ( kstp, Nbb, Nnn ) ! drifting Floats 221 IF( ln_diacfl ) CALL dia_cfl ( kstp, Nnn ) ! Courant number diagnostics 222 IF( lk_diahth ) CALL dia_hth ( kstp, Nnn ) ! Thermocline depth (20 degres isotherm depth) 223 IF( lk_diadct ) CALL dia_dct ( kstp, Nnn ) ! Transports 224 CALL dia_ar5 ( kstp, Nnn ) ! ar5 diag 225 IF( lk_diaharm ) CALL dia_harm( kstp, Nnn ) ! Tidal harmonic analysis 226 CALL dia_wri ( kstp, Nnn ) ! ocean model: outputs 227 ! 228 IF( ln_crs ) CALL crs_fld ( kstp, Nnn ) ! ocean model: online field coarsening & output 229 229 230 230 #if defined key_top
Note: See TracChangeset
for help on using the changeset viewer.