File indexing completed on 2025-09-19 05:08:33 UTC
view on githubraw file Latest commit c3be0435 on 2025-09-18 18:40:16 UTC
fda3710353 Oliv*0001 #include "LONGSTEP_OPTIONS.h"
0002
0003
0004
0005
0006
0007 SUBROUTINE LONGSTEP_FORCING_SURF(
0008 I bi, bj, iMin, iMax, jMin, jMax,
cc9097e522 Oliv*0009 I myTime, myIter, myThid )
fda3710353 Oliv*0010
0011
0012
0013
0014
0015
0016
0017 IMPLICIT NONE
0018 #include "SIZE.h"
0019 #include "EEPARAMS.h"
0020 #include "PARAMS.h"
cc9097e522 Oliv*0021
0022
0023
fda3710353 Oliv*0024
0025 #include "LONGSTEP.h"
cc9097e522 Oliv*0026 #ifdef ALLOW_PTRACERS
0027 # include "PTRACERS_SIZE.h"
0028 # include "PTRACERS_PARAMS.h"
0029 # include "PTRACERS_FIELDS.h"
0030 #endif
fda3710353 Oliv*0031
0032
0033
0034
0035
0036
0037 INTEGER bi, bj, iMin, iMax, jMin, jMax
0038 _RL myTime
0039 INTEGER myIter
0040 INTEGER myThid
0041
0042 #ifdef ALLOW_LONGSTEP
cc9097e522 Oliv*0043 #ifdef ALLOW_PTRACERS
fda3710353 Oliv*0044
0045
0046
0047
0048
0049 INTEGER i, j
0050 INTEGER iTrc, ks
0051
0052
0053 IF ( usingPCoords ) THEN
0054 ks = Nr
0055 ELSE
0056 ks = 1
0057 ENDIF
0058
0059
0060 DO iTrc=1,PTRACERS_numInUse
0061 DO j = jMin, jMax
0062 DO i = iMin, iMax
0063 surfaceForcingPTr(i,j,bi,bj,iTrc) =
0064 & 0. _d 0
0065
0066 ENDDO
0067 ENDDO
0068 ENDDO
0069
0070 IF ( (nonlinFreeSurf.GT.0 .OR. usingPCoords)
0071 & .AND. useRealFreshWaterFlux ) THEN
0072
0073 DO iTrc=1,PTRACERS_numInUse
0074
0075
0076
0077
0078
0079
0080
0081 IF (PTRACERS_EvPrRn(iTrc).NE.UNSET_RL) THEN
0082 DO j = jMin, jMax
0083 DO i = iMin, iMax
0084 surfaceForcingPTr(i,j,bi,bj,iTrc) =
0085 & surfaceForcingPTr(i,j,bi,bj,iTrc)
0086 & + LS_fwFlux(i,j,bi,bj)
0087 & *( PTRACERS_EvPrRn(iTrc) - pTracer(i,j,ks,bi,bj,iTrc) )
0088 & *mass2rUnit
0089 ENDDO
0090 ENDDO
0091 ENDIF
0092
0093 ENDDO
0094
0095
0096 ELSE
0097
0098
0099
0100
0101 IF (convertFW2Salt .EQ. -1.) THEN
0102
0103
0104 DO iTrc=1,PTRACERS_numInUse
0105
0106 IF (PTRACERS_EvPrRn(iTrc).NE.UNSET_RL) THEN
0107
0108
0109
0110
0111
0112 DO j = jMin, jMax
0113 DO i = iMin, iMax
0114 surfaceForcingPTr(i,j,bi,bj,iTrc) =
0115 & surfaceForcingPTr(i,j,bi,bj,iTrc)
0116 & + LS_fwFlux(i,j,bi,bj)
0117 & *( pTracer(i,j,ks,bi,bj,iTrc) - PTRACERS_EvPrRn(iTrc) )
0118 & *mass2rUnit
0119 ENDDO
0120 ENDDO
0121 ENDIF
0122
0123 ENDDO
0124
0125 ELSE
0126
0127
0128 DO iTrc=1,PTRACERS_numInUse
0129
0130 IF (PTRACERS_EvPrRn(iTrc).NE.UNSET_RL) THEN
0131
0132
0133
0134
0135
0136 DO j = jMin, jMax
0137 DO i = iMin, iMax
0138 surfaceForcingPTr(i,j,bi,bj,iTrc) =
0139 & surfaceForcingPTr(i,j,bi,bj,iTrc)
0140 & + LS_fwFlux(i,j,bi,bj)
0141 & *( PTRACERS_ref(ks,iTrc) - PTRACERS_EvPrRn(iTrc) )
0142 & *mass2rUnit
0143 ENDDO
0144 ENDDO
0145 ENDIF
0146
0147 ENDDO
0148
0149
0150 ENDIF
0151
0152 ENDIF
0153
0154
0155
cc9097e522 Oliv*0156 #endif /* ALLOW_PTRACERS */
fda3710353 Oliv*0157 #endif /* ALLOW_LONGSTEP */
0158
0159 RETURN
0160 END