Changeset 15540 for NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/DIA/diadct.F90
- Timestamp:
- 2021-11-26T12:27:56+01:00 (3 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
NEMO/branches/2021/dev_r14116_HPC-10_mcastril_Mixed_Precision_implementation/src/OCE/DIA/diadct.F90
r14219 r15540 61 61 62 62 TYPE COORD_SECTION 63 REAL( wp) :: lon,lat63 REAL(dp) :: lon,lat 64 64 END TYPE COORD_SECTION 65 65 … … 73 73 INTEGER, DIMENSION(nb_point_max) :: direction ! vector direction of the point in the section 74 74 CHARACTER(len=40),DIMENSION(nb_class_max) :: classname ! characteristics of the class 75 REAL( wp), DIMENSION(nb_class_max) :: zsigi ! in-situ density classes (99 if you don't want)76 REAL( wp), DIMENSION(nb_class_max) :: zsigp ! potential density classes (99 if you don't want)77 REAL( wp), DIMENSION(nb_class_max) :: zsal ! salinity classes (99 if you don't want)78 REAL( wp), DIMENSION(nb_class_max) :: ztem ! temperature classes(99 if you don't want)79 REAL( wp), DIMENSION(nb_class_max) :: zlay ! level classes (99 if you don't want)80 REAL( wp), DIMENSION(nb_type_class,nb_class_max) :: transport ! transport output81 REAL( wp) :: slopeSection ! slope of the section75 REAL(dp), DIMENSION(nb_class_max) :: zsigi ! in-situ density classes (99 if you don't want) 76 REAL(dp), DIMENSION(nb_class_max) :: zsigp ! potential density classes (99 if you don't want) 77 REAL(dp), DIMENSION(nb_class_max) :: zsal ! salinity classes (99 if you don't want) 78 REAL(dp), DIMENSION(nb_class_max) :: ztem ! temperature classes(99 if you don't want) 79 REAL(dp), DIMENSION(nb_class_max) :: zlay ! level classes (99 if you don't want) 80 REAL(dp), DIMENSION(nb_type_class,nb_class_max) :: transport ! transport output 81 REAL(dp) :: slopeSection ! slope of the section 82 82 INTEGER :: nb_point ! number of points in the section 83 83 TYPE(POINT_SECTION),DIMENSION(nb_point_max) :: listPoint ! list of points in the sections … … 86 86 TYPE(SECTION),DIMENSION(nb_sec_max) :: secs ! Array of sections 87 87 88 REAL( wp), ALLOCATABLE, DIMENSION(:,:,:,:) :: transports_3d89 REAL( wp), ALLOCATABLE, DIMENSION(:,:,:) :: transports_2d88 REAL(dp), ALLOCATABLE, DIMENSION(:,:,:,:) :: transports_3d 89 REAL(dp), ALLOCATABLE, DIMENSION(:,:,:) :: transports_2d 90 90 91 91 … … 202 202 INTEGER , DIMENSION(1) :: ish ! work array for mpp_sum 203 203 INTEGER , DIMENSION(3) :: ish2 ! " 204 REAL( wp), ALLOCATABLE, DIMENSION(:) :: zwork ! "205 REAL( wp), ALLOCATABLE, DIMENSION(:,:,:):: zsum ! "204 REAL(dp), ALLOCATABLE, DIMENSION(:) :: zwork ! " 205 REAL(dp), ALLOCATABLE, DIMENSION(:,:,:):: zsum ! " 206 206 !!--------------------------------------------------------------------- 207 207 ! … … 587 587 ! 588 588 INTEGER :: jk, jseg, jclass,jl, isgnu, isgnv ! loop on level/segment/classes/ice categories 589 REAL( wp):: zumid, zvmid, zumid_ice, zvmid_ice ! U/V ocean & ice velocity on a cell segment590 REAL( wp):: zTnorm ! transport of velocity through one cell's sides591 REAL( wp):: ztn, zsn, zrhoi, zrhop, zsshn, zdep ! temperature/salinity/potential density/ssh/depth at u/v point589 REAL(dp):: zumid, zvmid, zumid_ice, zvmid_ice ! U/V ocean & ice velocity on a cell segment 590 REAL(dp):: zTnorm ! transport of velocity through one cell's sides 591 REAL(dp):: ztn, zsn, zrhoi, zrhop, zsshn, zdep ! temperature/salinity/potential density/ssh/depth at u/v point 592 592 TYPE(POINT_SECTION) :: k 593 593 !!-------------------------------------------------------- … … 680 680 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 681 681 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 682 zrhoi = interp(Kmm,k%I,k%J,jk,'V', CASTDP(rhd*rho0+rho0))682 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0) 683 683 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I,k%J+1,Kmm) ) * vmask(k%I,k%J,1) 684 684 CASE(2,3) … … 686 686 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 687 687 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 688 zrhoi = interp(Kmm,k%I,k%J,jk,'U', CASTDP(rhd*rho0+rho0))688 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0) 689 689 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 690 690 END SELECT … … 794 794 TYPE(POINT_SECTION) :: k 795 795 INTEGER :: jk,jseg,jclass ! dummy variables for looping on level/segment/classes 796 REAL( wp) :: ztn, zsn, zrhoi, zrhop, zsshn, zdep ! temperature/salinity/ssh/potential density /depth at u/v point796 REAL(dp) :: ztn, zsn, zrhoi, zrhop, zsshn, zdep ! temperature/salinity/ssh/potential density /depth at u/v point 797 797 !!------------------------------------------------------------- 798 798 … … 853 853 zsn = interp(Kmm,k%I,k%J,jk,'V',ts(:,:,:,jp_sal,Kmm) ) 854 854 zrhop = interp(Kmm,k%I,k%J,jk,'V',rhop) 855 zrhoi = interp(Kmm,k%I,k%J,jk,'V', CASTDP(rhd*rho0+rho0))855 zrhoi = interp(Kmm,k%I,k%J,jk,'V',rhd*rho0+rho0) 856 856 857 857 CASE(2,3) … … 859 859 zsn = interp(Kmm,k%I,k%J,jk,'U',ts(:,:,:,jp_sal,Kmm) ) 860 860 zrhop = interp(Kmm,k%I,k%J,jk,'U',rhop) 861 zrhoi = interp(Kmm,k%I,k%J,jk,'U', CASTDP(rhd*rho0+rho0))861 zrhoi = interp(Kmm,k%I,k%J,jk,'U',rhd*rho0+rho0) 862 862 zsshn = 0.5*( ssh(k%I,k%J,Kmm) + ssh(k%I+1,k%J,Kmm) ) * umask(k%I,k%J,1) 863 863 END SELECT … … 987 987 INTEGER :: jclass ! Dummy loop 988 988 CHARACTER(len=2) :: classe ! Classname 989 REAL( wp) :: zbnd1,zbnd2 ! Class bounds990 REAL( wp) :: zslope ! section's slope coeff989 REAL(dp) :: zbnd1,zbnd2 ! Class bounds 990 REAL(dp) :: zslope ! section's slope coeff 991 991 ! 992 REAL( wp), DIMENSION(nb_type_class):: zsumclasses ! 1D workspace992 REAL(dp), DIMENSION(nb_type_class):: zsumclasses ! 1D workspace 993 993 !!------------------------------------------------------------- 994 994 … … 1171 1171 CHARACTER(len=1), INTENT(IN) :: cd_point ! type of point (U, V) 1172 1172 REAL(dp), DIMENSION(jpi,jpj,jpk), INTENT(IN) :: ptab ! variable to compute at (ki, kj, kk ) 1173 REAL( wp) :: interp ! interpolated variable1173 REAL(dp) :: interp ! interpolated variable 1174 1174 1175 1175 !*local declations 1176 1176 INTEGER :: ii1, ij1, ii2, ij2 ! local integer 1177 REAL( wp):: ze3t, ze3, zwgt1, zwgt2, zbis, zdepu ! local real1178 REAL( wp):: zet1, zet2 ! weight for interpolation1179 REAL( wp):: zdep1,zdep2 ! differences of depth1180 REAL( wp):: zmsk ! mask value1177 REAL(dp):: ze3t, ze3, zwgt1, zwgt2, zbis, zdepu ! local real 1178 REAL(dp):: zet1, zet2 ! weight for interpolation 1179 REAL(dp):: zdep1,zdep2 ! differences of depth 1180 REAL(dp):: zmsk ! mask value 1181 1181 !!---------------------------------------------------------------------- 1182 1182
Note: See TracChangeset
for help on using the changeset viewer.