File indexing completed on 2024-12-17 18:33:59 UTC
view on githubraw file Latest commit 6a235f5b on 2024-01-02 23:15:56 UTC
8fbfd1f382 Oliv*0001 #include "DARWIN_OPTIONS.h"
0002 #include "EXF_OPTIONS.h"
0003
0004
0005
0006
0007
0008
0009 SUBROUTINE DARWIN_INIT_VARIA( myThid )
0010
0011
0012
0013
0014
0015 IMPLICIT NONE
0016 #include "EEPARAMS.h"
0017 #include "SIZE.h"
0018 #include "GRID.h"
0019 #include "PARAMS.h"
0020 #include "EXF_FIELDS.h"
0021 #include "PTRACERS_SIZE.h"
0022 #include "PTRACERS_PARAMS.h"
0023 #include "PTRACERS_FIELDS.h"
0024 #include "DARWIN_SIZE.h"
0025 #include "DARWIN_INDICES.h"
0026 #include "DARWIN_PARAMS.h"
0027 #include "DARWIN_TRAITS.h"
0028 #include "DARWIN_EXF_FIELDS.h"
0029 #include "DARWIN_FIELDS.h"
0030
0031
0032 INTEGER myThid
0033
0034
0035 #ifdef ALLOW_DARWIN
0036
0037 _RL dTsub(Nr)
6a235f5bb3 Oliv*0038 INTEGER i,j,k,l,bi,bj,jp
b634651c8c Oliv*0039 CHARACTER*(MAX_LEN_FNAM) fnam
8fbfd1f382 Oliv*0040
0041 CALL DARWIN_EXF_INIT_VARIA(myThid)
0042
0043 IF (DARWIN_useEXFwind) THEN
0044 DO bj=myByLo(mythid),myByHi(myThid)
0045 DO bi=myBxLo(mythid),myBxHi(myThid)
0046 DO j=1-OLy,sNy+OLy
0047 DO i=1-OLx,sNx+OLx
0048 windSpeed(i,j,bi,bj) = wspeed(i,j,bi,bj)
0049 ENDDO
0050 ENDDO
0051 ENDDO
0052 ENDDO
0053 ENDIF
0054
0055 #ifdef DARWIN_ALLOW_CARBON
0056 DO bj=myByLo(mythid),myByHi(myThid)
0057 DO bi=myBxLo(mythid),myBxHi(myThid)
0058 DO j=1-OLy,sNy+OLy
0059 DO i=1-OLx,sNx+OLx
c548a1227a Oliv*0060 AtmosP(i,j,bi,bj) = 1.0 _d 0
8fbfd1f382 Oliv*0061 ENDDO
c548a1227a Oliv*0062 ENDDO
8fbfd1f382 Oliv*0063 ENDDO
0064 ENDDO
0065 #endif
0066
0067 #ifndef DARWIN_ALLOW_CHLQUOTA
0068 chlPrev = 0.0 _d 0
0069 #endif
0070
0071 IF (nIter0.EQ.PTRACERS_Iter0) THEN
c70e479b83 Oliv*0072 DO bj=myByLo(mythid),myByHi(myThid)
0073 DO bi=myBxLo(mythid),myBxHi(myThid)
0074 DO jp=1,nplank
8fbfd1f382 Oliv*0075 IF (diazo(jp) .EQ. 1) THEN
0076 DO k=1,Nr
0077 DO j=1-OLy,sNy+OLy
0078 DO i=1-OLx,sNx+OLx
0079 Ptracer(i,j,k,bi,bj,ic+jp-1)=Ptracer(i,j,k,bi,bj,ic+jp-1)*
0080 & diaz_ini_fac
0081 #ifdef DARWIN_ALLOW_NQUOTA
0082 Ptracer(i,j,k,bi,bj,in+jp-1)=Ptracer(i,j,k,bi,bj,in+jp-1)*
0083 & diaz_ini_fac
0084 #endif
0085 #ifdef DARWIN_ALLOW_PQUOTA
0086 Ptracer(i,j,k,bi,bj,ip+jp-1)=Ptracer(i,j,k,bi,bj,ip+jp-1)*
0087 & diaz_ini_fac
0088 #endif
0089 #ifdef DARWIN_ALLOW_FEQUOTA
0090 Ptracer(i,j,k,bi,bj,ife+jp-1)=Ptracer(i,j,k,bi,bj,ife+jp-1)*
0091 & diaz_ini_fac
0092 #endif
0093 #ifdef DARWIN_ALLOW_SIQUOTA
0094 Ptracer(i,j,k,bi,bj,isi+jp-1)=Ptracer(i,j,k,bi,bj,isi+jp-1)*
0095 & diaz_ini_fac
0096 #endif
c70e479b83 Oliv*0097 ENDDO
0098 ENDDO
0099 ENDDO
0100 ENDIF
0101 ENDDO
0102 ENDDO
0103 ENDDO
8fbfd1f382 Oliv*0104 #ifdef DARWIN_ALLOW_CHLQUOTA
c70e479b83 Oliv*0105 DO bj=myByLo(mythid),myByHi(myThid)
0106 DO bi=myBxLo(mythid),myBxHi(myThid)
0107 DO jp=1,nPhoto
0108 IF (diazo(jp) .EQ. 1) THEN
0109 DO k=1,Nr
0110 DO j=1-OLy,sNy+OLy
0111 DO i=1-OLx,sNx+OLx
8fbfd1f382 Oliv*0112 Ptracer(i,j,k,bi,bj,ichl+jp-1)=Ptracer(i,j,k,bi,bj,ichl+jp-1)*
0113 & diaz_ini_fac
0114 ENDDO
0115 ENDDO
0116 ENDDO
0117 ENDIF
c70e479b83 Oliv*0118 ENDDO
8fbfd1f382 Oliv*0119 ENDDO
c70e479b83 Oliv*0120 ENDDO
0121 #endif
8fbfd1f382 Oliv*0122 ENDIF
0123
0124 IF (darwin_read_phos .AND. nIter0.EQ.PTRACERS_Iter0) THEN
0125 DO jp=1,nplank
0126 DO bj=myByLo(mythid),myByHi(myThid)
0127 DO bi=myBxLo(mythid),myBxHi(myThid)
0128 DO k=1,Nr
0129 DO j=1-OLy,sNy+OLy
0130 DO i=1-OLx,sNx+OLx
0131 Ptracer(i,j,k,bi,bj,ic+jp-1) = Ptracer(i,j,k,bi,bj,ic+jp-1)*
0132 & 120 _d 0
0133 ENDDO
0134 ENDDO
0135 ENDDO
0136 ENDDO
0137 ENDDO
0138 ENDDO
0139 ENDIF
0140
0141 IF ( nIter0.GT.PTRACERS_Iter0 .OR.
f17484eeb1 Oliv*0142 & (nIter0.EQ.PTRACERS_Iter0 .AND. darwin_pickupSuff.NE.' ')
8fbfd1f382 Oliv*0143 & ) THEN
0144 CALL DARWIN_READ_PICKUP(nIter0, myThid)
0145 ENDIF
0146
6a235f5bb3 Oliv*0147 #ifdef DARWIN_ALLOW_CARBON
0148 CALL DARWIN_SURFFORCING_INIT( myThid )
0149 #endif
0150
8fbfd1f382 Oliv*0151 IF (nIter0 .EQ. darwin_chlIter0) THEN
0152
0153
0154
0155 DO bj=myByLo(mythid),myByHi(myThid)
0156 DO bi=myBxLo(mythid),myBxHi(myThid)
0157 CALL DARWIN_INIT_CHL(bi, bj, startTime, nIter0, myThid)
0158 ENDDO
0159 ENDDO
0160
6a235f5bb3 Oliv*0161
0162 #ifdef DARWIN_ALLOW_CHLQUOTA
0163 DO jp=1,nPhoto
0164 _EXCH_XYZ_RL(pTracer(1-OLx,1-OLy,1,1,1,iChl+jp-1),myThid)
0165 ENDDO
0166 #else
0167 # ifdef ALLOW_RADTRANS
0168 DO jp=1,nPhoto
0169 _EXCH_XYZ_RL(chlPrev(1-OLx,1-OLy,1,1,1,jp),myThid)
0170 ENDDO
0171 # else
0172 _EXCH_XYZ_RL(chlPrev,myThid)
0173 # endif
8fbfd1f382 Oliv*0174 #endif
6a235f5bb3 Oliv*0175 ENDIF
8fbfd1f382 Oliv*0176
0177 #ifdef DARWIN_ALLOW_CONS
0178 IF ( myProcId.EQ.0 .AND. myThid.EQ.1 ) THEN
b634651c8c Oliv*0179 WRITE(fnam,'(A,I10.10,A)') 'darwin_cons_C.',nIter0,'.txt'
8fbfd1f382 Oliv*0180 CALL MDSFINDUNIT( DAR_cons_c_unit, mythid )
b634651c8c Oliv*0181 OPEN(DAR_cons_C_unit,file=fnam,status='unknown')
0182 WRITE(fnam,'(A,I10.10,A)') 'darwin_cons_N.',nIter0,'.txt'
8fbfd1f382 Oliv*0183 CALL MDSFINDUNIT( DAR_cons_n_unit, mythid )
b634651c8c Oliv*0184 OPEN(DAR_cons_N_unit,file=fnam,status='unknown')
0185 WRITE(fnam,'(A,I10.10,A)') 'darwin_cons_P.',nIter0,'.txt'
0186 CALL MDSFINDUNIT( DAR_cons_p_unit, mythid )
0187 OPEN(DAR_cons_P_unit,file=fnam,status='unknown')
0188 WRITE(fnam,'(A,I10.10,A)') 'darwin_cons_Fe.',nIter0,'.txt'
8fbfd1f382 Oliv*0189 CALL MDSFINDUNIT( DAR_cons_fe_unit, mythid )
b634651c8c Oliv*0190 OPEN(DAR_cons_Fe_unit,file=fnam,status='unknown')
0191 WRITE(fnam,'(A,I10.10,A)') 'darwin_cons_Si.',nIter0,'.txt'
8fbfd1f382 Oliv*0192 CALL MDSFINDUNIT( DAR_cons_si_unit, mythid )
b634651c8c Oliv*0193 OPEN(DAR_cons_Si_unit,file=fnam,status='unknown')
8fbfd1f382 Oliv*0194 #ifdef DARWIN_ALLOW_CARBON
b634651c8c Oliv*0195 WRITE(fnam,'(A,I10.10,A)') 'darwin_cons_A.',nIter0,'.txt'
8fbfd1f382 Oliv*0196 CALL MDSFINDUNIT( DAR_cons_a_unit, mythid )
b634651c8c Oliv*0197 OPEN(DAR_cons_A_unit,file=fnam,status='unknown')
0198 WRITE(fnam,'(A,I10.10,A)') 'darwin_cons_O.',nIter0,'.txt'
8fbfd1f382 Oliv*0199 CALL MDSFINDUNIT( DAR_cons_o_unit, mythid )
b634651c8c Oliv*0200 OPEN(DAR_cons_O_unit,file=fnam,status='unknown')
8fbfd1f382 Oliv*0201 #endif
0202
0203 ENDIF
0204 #endif
0205
0206 #endif /* ALLOW_DARWIN */
0207
0208 RETURN
0209 END
0210