/[MITgcm]/MITgcm/pkg/seaice/seaice_growth.F
ViewVC logotype

Diff of /MITgcm/pkg/seaice/seaice_growth.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph | View Patch Patch

revision 1.6 by dimitri, Tue Dec 19 18:57:10 2006 UTC revision 1.7 by mlosch, Wed Dec 20 12:25:15 2006 UTC
# Line 79  C     wind speed Line 79  C     wind speed
79        _RL UG     (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)        _RL UG     (1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
80        _RL SPEED_SQ        _RL SPEED_SQ
81  C     local copy of AREA  C     local copy of AREA
82        _RL areaLoc(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)        _RL areaLoc
83    
84  #ifdef SEAICE_MULTILEVEL  #ifdef SEAICE_MULTICATEGORY
85        INTEGER it        INTEGER it
86        INTEGER ilockey        INTEGER ilockey
87        _RL RK        _RL RK
88        _RL HICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)        _RL HICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
89        _RL FICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)        _RL FICEP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
90          _RL QSWIP(1-OLx:sNx+OLx, 1-OLy:sNy+OLy)
91  #endif  #endif
92    
93        if ( buoyancyRelation .eq. 'OCEANICP' ) then        if ( buoyancyRelation .eq. 'OCEANICP' ) then
# Line 136  CADJ &                         key = iic Line 137  CADJ &                         key = iic
137  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
138          DO J=1,sNy          DO J=1,sNy
139           DO I=1,sNx           DO I=1,sNx
           areaLoc(I,J)     = MAX(A22,AREA(I,J,2,bi,bj))  
140            FHEFF(I,J)       = 0.0 _d 0            FHEFF(I,J)       = 0.0 _d 0
141            FICE (I,J)       = 0.0 _d 0            FICE (I,J)       = 0.0 _d 0
142  #ifdef SEAICE_MULTILEVEL  #ifdef SEAICE_MULTICATEGORY
143            FICEP(I,J)       = 0.0 _d 0            FICEP(I,J)       = 0.0 _d 0
144              QSWIP(I,J)       = 0.0 _d 0
145  #endif  #endif
146            FHEFF(I,J)       = 0.0 _d 0            FHEFF(I,J)       = 0.0 _d 0
147            FICE (I,J)       = 0.0 _d 0            FICE (I,J)       = 0.0 _d 0
# Line 161  CADJ &                         key = iic Line 162  CADJ &                         key = iic
162  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
163          DO J=1,sNy          DO J=1,sNy
164           DO I=1,sNx           DO I=1,sNx
 cph need to adjoint-store AREA again before using it in further init.  
 cph (all these initialisations involving AREA are nasty "non-linear")  
165  C     COMPUTE ACTUAL ICE THICKNESS AND PUT MINIMUM/MAXIMUM  C     COMPUTE ACTUAL ICE THICKNESS AND PUT MINIMUM/MAXIMUM
166  C     ON ICE THICKNESS FOR BUDGET COMPUTATION  C     ON ICE THICKNESS FOR BUDGET COMPUTATION
167            HICE(I,J)    = HEFF(I,J,2,bi,bj)/areaLoc(I,J)            areaLoc      = MAX(A22,AREA(I,J,2,bi,bj))
168              HICE(I,J)    = HEFF(I,J,2,bi,bj)/areaLoc
169            HICE(I,J)    = MAX(HICE(I,J),0.05 _d +00)            HICE(I,J)    = MAX(HICE(I,J),0.05 _d +00)
170            HICE(I,J)    = MIN(HICE(I,J),9.0 _d +00)            HICE(I,J)    = MIN(HICE(I,J),9.0 _d +00)
171            hSnwLoc(I,J) = HSNOW(I,J,bi,bj)/areaLoc(I,J)            hSnwLoc(I,J) = HSNOW(I,J,bi,bj)/areaLoc
172           ENDDO           ENDDO
173          ENDDO          ENDDO
174    
# Line 208  cphCADJ STORE uwind  = comlev1, key = ik Line 208  cphCADJ STORE uwind  = comlev1, key = ik
208  cphCADJ STORE vwind  = comlev1, key = ikey_dynamics  cphCADJ STORE vwind  = comlev1, key = ikey_dynamics
209  c  c
210  CADJ STORE tice   = comlev1, key = ikey_dynamics  CADJ STORE tice   = comlev1, key = ikey_dynamics
211  # ifdef SEAICE_MULTILEVEL  # ifdef SEAICE_MULTICATEGORY
212  CADJ STORE tices  = comlev1, key = ikey_dynamics  CADJ STORE tices  = comlev1, key = ikey_dynamics
213  # endif  # endif
214  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
# Line 222  C FIRST DO OPEN WATER Line 222  C FIRST DO OPEN WATER
222       I       bi, bj)       I       bi, bj)
223    
224  C NOW DO ICE  C NOW DO ICE
225  #ifdef SEAICE_MULTILEVEL  #ifdef SEAICE_MULTICATEGORY
226  C--  Start loop over muli-levels  C--  Start loop over muli-categories
227          DO IT=1,MULTDIM          DO IT=1,MULTDIM
228  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
229           ilockey = (iicekey-1)*MULTDIM + IT           ilockey = (iicekey-1)*MULTDIM + IT
230  CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim,  CADJ STORE tices(:,:,it,bi,bj) = comlev1_multdim,
231  CADJ &                           key = ilockey, byte = isbyte  CADJ &                           key = ilockey, byte = isbyte
232  #endif /* ALLOW_AUTODIFF_TAMC */  #endif /* ALLOW_AUTODIFF_TAMC */
233             RK=REAL(IT)
234           DO J=1,sNy           DO J=1,sNy
235            DO I=1,sNx            DO I=1,sNx
236             RK=IT*1.0             HICEP(I,J)=(HICE(I,J)/MULTDIM)*((2.0 _d 0*RK)-1.0 _d 0)
            HICEP(I,J)=(HICE(I,J)/7.0 _d 0)*((2.0 _d 0*RK)-1.0 _d 0)  
237             TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)             TICE(I,J,bi,bj)=TICES(I,J,IT,bi,bj)
238            ENDDO            ENDDO
239           ENDDO           ENDDO
240           CALL SEAICE_BUDGET_ICE(           CALL SEAICE_BUDGET_ICE(
241       I        UG, HICEP, hSnwLoc,       I        UG, HICEP, hSnwLoc,
242       U        TICE,       U        TICE,
243       O        FICE, QSWI,       O        FICEP, QSWIP,
244       I        bi, bj)       I        bi, bj)
245           DO J=1,sNy           DO J=1,sNy
246            DO I=1,sNx            DO I=1,sNx
247             FICEP(I,J)=(FICE(I,J)/7.0 _d 0)+FICEP(I,J)  C     average surface heat fluxes/growth rates
248             TICES(I,J,IT,bi,bj)=TICE(I,J,bi,bj)             FICE (I,J)          = FICE(I,J) + FICEP(I,J)/MULTDIM
249               QSWI (I,J)          = QSWI(I,J) + QSWIP(I,J)/MULTDIM
250               TICES(I,J,IT,bi,bj) = TICE(I,J,bi,bj)
251            ENDDO            ENDDO
252           ENDDO           ENDDO
253          ENDDO          ENDDO
254  C--  End loop over muli-levels  C--  End loop over multi-categories
255          DO J=1,sNy  #else  /* SEAICE_MULTICATEGORY */
          DO I=1,sNx  
           FICE(I,J)=FICEP(I,J)  
          ENDDO  
         ENDDO  
 #else  /* SEAICE_MULTILEVEL */  
256          CALL SEAICE_BUDGET_ICE(          CALL SEAICE_BUDGET_ICE(
257       I       UG, HICE, hSnwLoc,       I       UG, HICE, hSnwLoc,
258       U       TICE,       U       TICE,
259       O       FICE, QSWI,       O       FICE, QSWI,
260       I       bi, bj)       I       bi, bj)
261  #endif /* SEAICE_MULTILEVEL */  #endif /* SEAICE_MULTICATEGORY */
262            
263  #ifdef ALLOW_AUTODIFF_TAMC  #ifdef ALLOW_AUTODIFF_TAMC
264  CADJ STORE theta(:,:,:,bi,bj)= comlev1_bibj,  CADJ STORE theta(:,:,:,bi,bj)= comlev1_bibj,

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

  ViewVC Help
Powered by ViewVC 1.1.22