File indexing completed on 2018-03-02 18:45:52 UTC
view on githubraw file Latest commit add29e06 on 2018-01-31 20:35:05 UTC
97f6d163ab Davi*0001 #include "PTRACERS_OPTIONS.h"
0002
0003
9d21426460 Jean*0004
97f6d163ab Davi*0005
0006
9d21426460 Jean*0007 SUBROUTINE PTRACERS_APPLY_FORCING(
0008 U gPtracer,
0009 I surfForcPtr,
0010 I iMin,iMax,jMin,jMax, k, bi, bj,
0011 I iTracer, myTime, myIter, myThid )
97f6d163ab Davi*0012
0013
9d21426460 Jean*0014
0015
97f6d163ab Davi*0016
0017
0018 IMPLICIT NONE
0019 #include "SIZE.h"
0020 #include "EEPARAMS.h"
0021 #include "PARAMS.h"
0022 #include "GRID.h"
d6215f7b79 Jean*0023 #include "PTRACERS_SIZE.h"
0024 #include "PTRACERS_PARAMS.h"
0025 #include "PTRACERS_FIELDS.h"
97f6d163ab Davi*0026
0027
9d21426460 Jean*0028
0029
97f6d163ab Davi*0030
0031
9d21426460 Jean*0032
97f6d163ab Davi*0033
0034
0035
0036
9d21426460 Jean*0037 _RL gPtracer (1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0038 _RL surfForcPtr(1-OLx:sNx+OLx,1-OLy:sNy+OLy)
0039 INTEGER iMin,iMax,jMin,jMax
0040 INTEGER k, bi,bj, iTracer
97f6d163ab Davi*0041 _RL myTime
9d21426460 Jean*0042 INTEGER myIter
97f6d163ab Davi*0043 INTEGER myThid
0044
0045
ae8a9c26a9 Davi*0046
97f6d163ab Davi*0047
0048 #ifdef ALLOW_PTRACERS
0049
0050
ae8a9c26a9 Davi*0051
97f6d163ab Davi*0052 INTEGER i,j
0053
0054 INTEGER kSurface
0055
0056
0057 IF ( usingPCoords ) THEN
0058 kSurface = Nr
0059 ELSE
0060 kSurface = 1
0061 ENDIF
0062
9d21426460 Jean*0063
22e0cff85e Jean*0064
97f6d163ab Davi*0065
0066
0067 #ifdef ALLOW_GCHEM
9d21426460 Jean*0068 IF ( useGCHEM ) THEN
0069 CALL GCHEM_ADD_TENDENCY(
0070 U gPtracer,
0071 I iMin,iMax,jMin,jMax, k, bi, bj,
0072 I iTracer, myTime, myIter, myThid )
0073 ENDIF
a09a74749d Davi*0074 #endif /* ALLOW_GCHEM */
0075
0076 IF ( k .EQ. kSurface ) THEN
97f6d163ab Davi*0077 DO j=jMin,jMax
0078 DO i=iMin,iMax
9d21426460 Jean*0079 gPtracer(i,j) = gPtracer(i,j)
0080 & + surfForcPtr(i,j)
0081 & *recip_drF(k)*recip_hFacC(i,j,k,bi,bj)
97f6d163ab Davi*0082 ENDDO
0083 ENDDO
9d21426460 Jean*0084 ELSE
d6215f7b79 Jean*0085
97f6d163ab Davi*0086 DO j=jMin,jMax
0087 DO i=iMin,iMax
9d21426460 Jean*0088 gPtracer(i,j) = gPtracer(i,j)
0089 & + 1. _d 0 * maskC(i,j,k,bi,bj)
97f6d163ab Davi*0090 ENDDO
0091 ENDDO
a09a74749d Davi*0092 ENDIF
97f6d163ab Davi*0093
d6215f7b79 Jean*0094 IF (PTRACERS_linFSConserve(iTracer)) THEN
0095 IF (k .EQ. kSurface) THEN
0096 DO j=0,sNy+1
0097 DO i=0,sNx+1
0098 gPtracer(i,j) = gPtracer(i,j)
0099 & +meanSurfCorPTr(iTracer)*recip_drF(k)
0100 & *_recip_hFacC(i,j,k,bi,bj)
0101 ENDDO
0102 ENDDO
0103 ENDIF
0104 ENDIF
0105
97f6d163ab Davi*0106 #ifdef ALLOW_RBCS
ae8a9c26a9 Davi*0107 IF ( useRBCS ) THEN
9d21426460 Jean*0108 CALL RBCS_ADD_TENDENCY(
0109 U gPtracer,
0110 I k, bi, bj, iTracer+2,
0111 I myTime, myIter, myThid )
22e0cff85e Jean*0112 ENDIF
0113 #endif /* ALLOW_RBCS */
97f6d163ab Davi*0114
0115 #endif /* ALLOW_PTRACERS */
0116
0117 RETURN
0118 END