File indexing completed on 2021-04-08 05:12:22 UTC
view on githubraw file Latest commit ba0b0470 on 2021-04-08 01:06:32 UTC
e10b4e6008 Patr*0001 #include "SALT_PLUME_OPTIONS.h"
0002
0003
0004
0005
0006 SUBROUTINE SALT_PLUME_VOLFRAC(
0007 I bi, bj, myTime, myIter, myThid )
0008
0009
0010
0011
0012
0013
ba0b047096 Mart*0014
0015
e10b4e6008 Patr*0016
ba0b047096 Mart*0017
e10b4e6008 Patr*0018
0019
ba0b047096 Mart*0020
e10b4e6008 Patr*0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036 IMPLICIT NONE
0037 #include "SIZE.h"
0038 #include "GRID.h"
0039 #include "SALT_PLUME.h"
0040 #include "EEPARAMS.h"
0041 #include "PARAMS.h"
0042
0043
0044
0045
0046
0047
0048
0049 INTEGER bi,bj
0050 _RL myTime
0051 INTEGER myIter
0052 INTEGER myThid
0053
0054
0055
0056
0057 #ifdef ALLOW_SALT_PLUME
0058 #ifdef SALT_PLUME_VOLUME
0059
0060
0061 _RL dMbdt (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0062 _RL temp (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0063 _RL dplumek
0064 INTEGER SPkBottom (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0065 INTEGER i,j,k,kp1,Nlev,Nrp1
0066 INTEGER imt
0067 parameter( imt=(sNx+2*OLx)*(sNy+2*OLy) )
0068
0069
0070 Nrp1=Nr+1
0071 DO k=1,Nr
0072 DO j=1-OLy,sNy+OLy
0073 DO i=1-OLx,sNx+OLx
0074 dSPvolSurf2kLev(i,j,k,bi,bj) = 0. _d 0
0075 dSPvolkLev2Above(i,j,k,bi,bj) = 0. _d 0
0076 SPplumek(i,j,k,bi,bj) = 1. _d 0
0077 ENDDO
0078 ENDDO
0079 ENDDO
0080 DO j=1-OLy,sNy+OLy
0081 DO i=1-OLx,sNx+OLx
0082 SPplumek(i,j,Nrp1,bi,bj) = 1. _d 0
0083 SPbrineVolFlux(i,j,bi,bj) = 0. _d 0
0084 SPkBottom(i,j) = 0
0085 ENDDO
0086 ENDDO
0087
0088
0089
0090 DO k = Nrp1,1,-1
0091 DO j=1-Oly,sNy+Oly
0092 DO i=1-Olx,sNx+Olx
0093 temp(i,j)=SaltPlumeDepth(i,j,bi,bj)
0094 dMbdt(i,j)=abs(rF(k))
0095 ENDDO
0096 ENDDO
0097 CALL SALT_PLUME_FRAC(
0098 I imt,oneRS,temp,
0099 #ifdef SALT_PLUME_SPLIT_BASIN
d74df16944 An T*0100 I XC(1-Olx,1-Oly,bi,bj),YC(1-Olx,1-Oly,bi,bj),
e10b4e6008 Patr*0101 #endif
0102 U dMbdt,
0103 I myTime, 1, myThid )
0104 DO j=1-Oly,sNy+Oly
0105 DO i=1-Olx,sNx+Olx
0106 SPplumek(i,j,k,bi,bj)=dMbdt(i,j)
0107 IF(SPplumek(i,j,k,bi,bj).GT. 0.9999999) THEN
0108 SPkBottom(i,j)=k
0109 ENDIF
0110 ENDDO
0111 ENDDO
0112 ENDDO
0113
0114
0115 DO j=1-Oly,sNy+Oly
0116 DO i=1-Olx,sNx+Olx
0117 dMbdt(i,j)=0. _d 0
0118 ENDDO
0119 ENDDO
0120
0121
0122
ba0b047096 Mart*0123
e10b4e6008 Patr*0124
ba0b047096 Mart*0125
e10b4e6008 Patr*0126
0127
0128
0129
0130
ba0b047096 Mart*0131
e10b4e6008 Patr*0132
ba0b047096 Mart*0133
e10b4e6008 Patr*0134
0135
0136
0137
0138
ba0b047096 Mart*0139
e10b4e6008 Patr*0140
0141
0142
0143 DO j=1-OLy,sNy+OLy
0144 DO i=1-OLx,sNx+OLx
0145
0146 dMbdt(i,j)=saltPlumeFlux(i,j,bi,bj)/SPbrineSconst
0147 SPbrineVolFlux(i,j,bi,bj)=dMbdt(i,j)*mass2rUnit
0148 ENDDO
0149 ENDDO
0150
0151
0152 DO k=Nr,1,-1
0153 DO j=1-OLy,sNy+OLy
0154 DO i=1-OLx,sNx+OLx
0155 dplumek=SPplumek(i,j,k+1,bi,bj)-SPplumek(i,j,k,bi,bj)
0156 dSPvolSurf2kLev(i,j,k,bi,bj)=dplumek*SPbrineVolFlux(i,j,bi,bj)
0157 ENDDO
0158 ENDDO
0159 ENDDO
0160
0161
0162 DO j=1-OLy,sNy+OLy
0163 DO i=1-OLx,sNx+OLx
0164 Nlev=SPkBottom(i,j)
0165 IF(Nlev.GE.1 .AND. Nlev.LE.Nr) THEN
0166 DO k=Nlev,1,-1
0167 kp1=k+1
0168 dSPvolkLev2Above(i,j,k,bi,bj)=dSPvolkLev2Above(i,j,kp1,bi,bj)
0169 & - dSPvolSurf2kLev(i,j,k,bi,bj)
0170 ENDDO
0171 ENDIF
0172 ENDDO
0173 ENDDO
0174
0175 #ifdef ALLOW_DIAGNOSTICS
0176 IF ( useDiagnostics ) THEN
0177 CALL DIAGNOSTICS_FILL(
0178 & SPplumek,'PLUMEKB1',0,Nr,1,bi,bj,myThid )
0179 ENDIF
0180 #endif /* ALLOW_DIAGNOSTICS */
0181
0182 #endif /* SALT_PLUME_VOLUME */
0183 #endif /* ALLOW_SALT_PLUME */
0184
0185 RETURN
0186 END