Back to home page

darwin3

 
 

    


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 C---+----1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
                0005 CBOP
                0006 C     !ROUTINE: DARWIN_INIT_VARIA
                0007 
                0008 C     !INTERFACE:
                0009       SUBROUTINE DARWIN_INIT_VARIA( myThid )
                0010 
                0011 C     !DESCRIPTION:
                0012 C     Initialize DARWIN constants
                0013 
                0014 C     !USES:
                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 C     !INPUT PARAMETERS:
                0032       INTEGER myThid
                0033 CEOP
                0034 
                0035 #ifdef ALLOW_DARWIN
                0036 C     !LOCAL VARIABLES:
                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 C      Initialize Chl from balanced-growth Chl:C if requested
                0153 C      and check Chl:C bounds.
                0154 C      use current time for insol
                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 C      exchange (needed with OASIM)
                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 c     myProcId and myThid
                0203       ENDIF
                0204 #endif
                0205 
                0206 #endif /* ALLOW_DARWIN */
                0207 
                0208       RETURN
                0209       END
                0210