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

Annotation of /MITgcm/pkg/seaice/seaice_itd_pickup.F

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


Revision 1.3 - (hide annotations) (download)
Sat May 4 17:31:44 2013 UTC (12 years, 2 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint64y, checkpoint64x, checkpoint64z, checkpoint64o, checkpoint64q, checkpoint64p, checkpoint64s, checkpoint64r, checkpoint64u, checkpoint64t, checkpoint64w, checkpoint64v, checkpoint64n, checkpoint65b, checkpoint65c, checkpoint65a, checkpoint65f, checkpoint65d, checkpoint65e, checkpoint64i, checkpoint64h, checkpoint64k, checkpoint65, checkpoint64j, checkpoint64m, checkpoint64l
Changes since 1.2: +7 -5 lines
fix PARAMETER declaration

1 jmc 1.3 C $Header: /u/gcmpack/MITgcm/pkg/seaice/seaice_itd_pickup.F,v 1.2 2012/10/23 13:20:49 jmc Exp $
2 jmc 1.2 C $Name: $
3 heimbach 1.1
4     #include "SEAICE_OPTIONS.h"
5    
6     C !ROUTINE: SEAICE_ITD_PICKUP
7    
8     C !INTERFACE: ==========================================================
9     SUBROUTINE SEAICE_ITD_PICKUP(
10     I myIter, myThid )
11    
12     C !DESCRIPTION: \bv
13     C *===========================================================*
14     C | SUBROUTINE SEAICE_ITD_PICKUP
15     C | o called in case pickup file does not contain
16     C | ITD variables but mean ice thickness and concentration
17     C |
18     C | o choose between two schemes:
19     C |
20     C | a) a simple scheme where the mean values are just put
21     C | into the first ITD category and then redustributed
22     C | into the correct category by SEAICE_ITD_REDIST
23     C | -> simpleSchemeFlag = .TRUE.
24     C |
25     C | b) a scheme that assumes a log-normal distribution based
26 jmc 1.2 C | on the mean ice thickness and a standard decviation
27 heimbach 1.1 C | of LND_sigma=0.25
28     C | -> simpleSchemeFlag = .FALSE.
29     C |
30     C | Torge Martin, Mai 2012, torge@mit.edu
31     C *===========================================================*
32     C \ev
33    
34     C !USES: ===============================================================
35     IMPLICIT NONE
36    
37     C === Global variables needed ===
38     C AREA :: total sea ice area fraction
39     C HEFF :: mean in-situ sea ice thickness
40     C HSNOW :: mean in-situ snow layer depth
41     C
42     C === Global variables to be changed ===
43     C AREAITD :: sea ice area by category
44     C HEFFITD :: sea ice thickness by category
45     C HSNOWITD :: snow thickness by category
46     C
47     #include "SIZE.h"
48     #include "EEPARAMS.h"
49     #include "PARAMS.h"
50     #include "GRID.h"
51     #include "SEAICE_SIZE.h"
52     #include "SEAICE_PARAMS.h"
53     #include "SEAICE.h"
54    
55     #ifdef ALLOW_AUTODIFF_TAMC
56     # include "tamc.h"
57     #endif
58    
59     C !INPUT PARAMETERS: ===================================================
60     C === Routine arguments ===
61     C myIter :: iteration number
62     C myThid :: Thread no. that called this routine.
63     INTEGER myIter
64     INTEGER myThid
65     CEndOfInterface
66    
67     #ifdef SEAICE_ITD
68    
69     C !LOCAL VARIABLES: ====================================================
70     C === Local variables ===
71     C i,j,bi,bj,k :: Loop counters
72     C nITD :: number of sea ice thickness categories
73     C
74     INTEGER i, j, bi, bj, k
75     #ifdef ALLOW_AUTODIFF_TAMC
76     INTEGER itmpkey
77     #endif /* ALLOW_AUTODIFF_TAMC */
78     _RL dummyTime
79    
80 jmc 1.2 C local variables for picking up ITD from single category pickup file
81 heimbach 1.1 INTEGER LND_i, LND_iend
82     C parameters for log-normal distribution (LND)
83     _RL LND_sigma, LND_mu
84     PARAMETER(LND_sigma=0.25)
85     _RL LND_dx
86     _RL LND_tmp
87     C bin width of distribution
88 jmc 1.3 PARAMETER( LND_iend = 1000 )
89     PARAMETER( LND_dx = 100.D0 / LND_iend )
90     c PARAMETER(LND_dx=0.1)
91     c PARAMETER(LND_iend=INT(100./LND_dx))
92     _RL LND_x (LND_iend)
93     _RL LND_pdf(LND_iend)
94 heimbach 1.1 C flag for pickup scheme
95     LOGICAL simpleSchemeFlag
96    
97     simpleSchemeFlag = .TRUE.
98     dummyTime = 1.0
99    
100     C---+-|--1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
101     IF (simpleSchemeFlag) THEN
102     C-- Put all ice into one bin:
103     C
104     DO bj=myByLo(myThid),myByHi(myThid)
105     DO bi=myBxLo(myThid),myBxHi(myThid)
106     DO j=1-OLy,sNy+OLy
107     DO i=1-OLx,sNx+OLx
108     AREAITD(i,j,1,bi,bj) = AREA(i,j,bi,bj)
109     HEFFITD(i,j,1,bi,bj) = HEFF(i,j,bi,bj)
110     HSNOWITD(i,j,1,bi,bj) = HSNOW(i,j,bi,bj)
111     ENDDO
112     ENDDO
113     ENDDO
114     ENDDO
115    
116     C---+-|--1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
117     ELSE
118     C-- Assume log-normal ITD:
119    
120     DO bj=myByLo(myThid),myByHi(myThid)
121     DO bi=myBxLo(myThid),myBxHi(myThid)
122     DO j=1-OLy,sNy+OLy
123     DO i=1-OLx,sNx+OLx
124     C
125     C initialize log-normal distribution
126 jmc 1.2 LND_mu = log(HEFF(i,j,bi,bj)/AREA(i,j,bi,bj))
127 heimbach 1.1 & - 0.5*LND_sigma*LND_sigma
128 jmc 1.2 LND_x(1) = 0.+LND_dx/2.
129 heimbach 1.1 C make thickness bins
130 jmc 1.2 DO LND_i=2,LND_iend
131     LND_x(LND_i)=LND_x(LND_i-1)+LND_dx
132     ENDDO
133 heimbach 1.1 C log-normal distribution:
134 jmc 1.2 DO LND_i=2,LND_iend
135     LND_tmp = log(LND_x(LND_i))-LND_mu
136     LND_pdf(LND_i)= 1.
137     & / (LND_x(LND_i)*LND_sigma*sqrt(2*3.1416))
138 heimbach 1.1 & * exp( -(LND_tmp*LND_tmp)
139     & / (2*LND_sigma*LND_sigma) )
140     & * AREA(i,j,bi,bj)
141 jmc 1.2 ENDDO
142 heimbach 1.1 C assign bins to ice thickness categories
143     k=1
144 jmc 1.2 DO LND_i=1,LND_iend
145     IF ( LND_x(LND_i).GT.Hlimit(k) ) k=k+1
146 heimbach 1.1 AREAITD(i,j,k,bi,bj) = AREAITD(i,j,k,bi,bj)
147     & + LND_pdf(LND_i)*LND_dx
148     HEFFITD(i,j,k,bi,bj) = HEFFITD(i,j,k,bi,bj)
149     & + LND_pdf(LND_i)*LND_x(LND_i)*LND_dx
150 jmc 1.2 ENDDO
151 heimbach 1.1 C
152     ENDDO
153 jmc 1.2 ENDDO
154 heimbach 1.1 ENDDO
155 jmc 1.2 ENDDO
156 heimbach 1.1
157     ENDIF
158    
159     C---+-|--1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
160 jmc 1.2 C finally sort into correct ice thickness category
161     C and compute bulk variables
162 heimbach 1.1 C (needed for dynamic solver at beginning of seaice_model.F)
163     DO bj=myByLo(myThid),myByHi(myThid)
164     DO bi=myBxLo(myThid),myBxHi(myThid)
165     CALL SEAICE_ITD_REDIST( bi, bj, dummyTime, myIter, myThid)
166     CALL SEAICE_ITD_SUM( bi, bj, dummyTime, myIter, myThid)
167     ENDDO
168     ENDDO
169    
170     C---+-|--1----+----2----+----3----+----4----+----5----+----6----+----7-|--+----|
171     #endif /* SEAICE_ITD */
172     RETURN
173 jmc 1.2 END

  ViewVC Help
Powered by ViewVC 1.1.22