/[MITgcm]/MITgcm/model/src/load_ref_files.F
ViewVC logotype

Contents of /MITgcm/model/src/load_ref_files.F

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


Revision 1.1 - (show annotations) (download)
Fri Sep 5 20:15:28 2008 UTC (15 years, 7 months ago) by jmc
Branch: MAIN
CVS Tags: checkpoint62, checkpoint62c, checkpoint62b, checkpoint62a, checkpoint62g, checkpoint62f, checkpoint62e, checkpoint62d, checkpoint62k, checkpoint62j, checkpoint62i, checkpoint62h, checkpoint62o, checkpoint62n, checkpoint62m, checkpoint62l, checkpoint62p, checkpoint61f, checkpoint61g, checkpoint61d, checkpoint61e, checkpoint61n, checkpoint61o, checkpoint61l, checkpoint61m, checkpoint61j, checkpoint61k, checkpoint61h, checkpoint61i, checkpoint61v, checkpoint61w, checkpoint61t, checkpoint61u, checkpoint61r, checkpoint61s, checkpoint61p, checkpoint61q, checkpoint61z, checkpoint61x, checkpoint61y
- add initialisation of deepFac if using Pcoords (new S/R set_grid_factors)
- move things around:
  ini_phiref.F          --> set_ref_state.F  (+ set anelastic factors)
  ini_reference_state.F --> load_ref_files.F (- set anelastic factors)

1 C $Header: /u/gcmpack/MITgcm/model/src/ini_reference_state.F,v 1.2 2006/12/05 05:25:08 jmc Exp $
2 C $Name: $
3
4 c #include "PACKAGES_CONFIG.h"
5 #include "CPP_OPTIONS.h"
6
7 CBOP
8 C !ROUTINE: LOAD_REF_FILES
9 C !INTERFACE:
10 SUBROUTINE LOAD_REF_FILES( myThid )
11 C !DESCRIPTION: \bv
12 C *==========================================================*
13 C | SUBROUTINE LOAD_REF_FILES
14 C | o Read reference vertical profile from files
15 C | (Pot.Temp., Salinity/Specif.Humid., density ... )
16 C *==========================================================*
17 C \ev
18
19 C !USES:
20 IMPLICIT NONE
21 C === Global variables ===
22 #include "SIZE.h"
23 #include "EEPARAMS.h"
24 #include "PARAMS.h"
25 c #include "GRID.h"
26
27 C !INPUT/OUTPUT PARAMETERS:
28 C == Routine arguments ==
29 C myThid :: my Thread Id number
30 INTEGER myThid
31
32 C !LOCAL VARIABLES:
33 C == Local variables ==
34 C k :: loop index
35 C msgBuf :: Informational/error message buffer
36 C tmp4vRef :: temporary arrays to read in ref. vertical profile
37 C tmp8vRef :: temporary arrays to read in ref. vertical profile
38 C iUnit :: Work variable for IO unit number
39 REAL*4 tmp4vRef(Nr)
40 REAL*8 tmp8vRef(Nr)
41 _RL tracerDefault
42 INTEGER ILNBLNK
43 EXTERNAL ILNBLNK
44 INTEGER k, kLen, iUnit
45 CHARACTER*(MAX_LEN_MBUF) msgBuf
46 CEOP
47
48 _BEGIN_MASTER( myThid )
49
50 C-- Set reference Potential Temperature
51 IF ( tRefFile .EQ. ' ' ) THEN
52 C- set default vertical profile for temperature: tRef
53 tracerDefault = 20.
54 IF ( fluidIsAir ) tracerDefault = 300.
55 DO k=1,Nr
56 IF (tRef(k).EQ.UNSET_RL) tRef(k) = tracerDefault
57 tracerDefault = tRef(k)
58 ENDDO
59 ELSE
60 C- check for multiple definitions:
61 DO k=1,Nr
62 IF (tRef(k).NE.UNSET_RL) THEN
63 WRITE(msgBuf,'(2A,I4,A)') 'S/R LOAD_REF_FILES:',
64 & ' Cannot set both tRef(k=', k, ') and tRefFile'
65 CALL PRINT_ERROR( msgBuf, myThid )
66 STOP 'ABNORMAL END: S/R INI_PARMS'
67 ENDIF
68 ENDDO
69 ENDIF
70 C- read from file:
71 IF ( tRefFile .NE. ' ' ) THEN
72 CALL MDSFINDUNIT( iUnit, myThid )
73 kLen = ILNBLNK(tRefFile)
74 IF (readBinaryPrec.EQ.precFloat32) THEN
75 OPEN(iUnit, FILE=tRefFile(1:kLen), STATUS='OLD',
76 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=WORDLENGTH*Nr)
77 READ(iUnit,rec=1) tmp4vRef
78 CLOSE(iUnit)
79 #ifdef _BYTESWAPIO
80 CALL MDS_BYTESWAPR4( Nr, tmp4vRef )
81 #endif
82 DO k=1,Nr
83 tRef(k) = tmp4vRef(k)
84 ENDDO
85 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
86 OPEN(iUnit, FILE=tRefFile(1:kLen), STATUS='OLD',
87 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=WORDLENGTH*2*Nr)
88 READ(iUnit,rec=1) tmp8vRef
89 CLOSE(iUnit)
90 #ifdef _BYTESWAPIO
91 CALL MDS_BYTESWAPR8( Nr, tmp8vRef )
92 #endif
93 DO k=1,Nr
94 tRef(k) = tmp8vRef(k)
95 ENDDO
96 ENDIF
97 WRITE(msgBuf,'(3A)') 'S/R LOAD_REF_FILES:',
98 & ' tRef loaded from file: ', tRefFile(1:kLen)
99 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
100 & SQUEEZE_RIGHT , myThid )
101 ENDIF
102
103 C-- Set reference Salinity/Specific Humidity
104 IF ( sRefFile .EQ. ' ' ) THEN
105 C- set default vertical profile for salinity/water-vapour: sRef
106 tracerDefault = 30.
107 IF ( fluidIsAir ) tracerDefault = 0.
108 DO k=1,Nr
109 IF (sRef(k).EQ.UNSET_RL) sRef(k) = tracerDefault
110 tracerDefault = sRef(k)
111 ENDDO
112 ELSE
113 C- check for multiple definitions:
114 DO k=1,Nr
115 IF (sRef(k).NE.UNSET_RL) THEN
116 WRITE(msgBuf,'(2A,I4,A)') 'S/R LOAD_REF_FILES:',
117 & ' Cannot set both sRef(k=', k, ') and sRefFile'
118 CALL PRINT_ERROR( msgBuf, myThid )
119 STOP 'ABNORMAL END: S/R INI_PARMS'
120 ENDIF
121 ENDDO
122 ENDIF
123 C- read from file:
124 IF ( sRefFile .NE. ' ' ) THEN
125 CALL MDSFINDUNIT( iUnit, myThid )
126 kLen = ILNBLNK(sRefFile)
127 IF (readBinaryPrec.EQ.precFloat32) THEN
128 OPEN(iUnit, FILE=sRefFile(1:kLen), STATUS='OLD',
129 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=WORDLENGTH*Nr)
130 READ(iUnit,rec=1) tmp4vRef
131 CLOSE(iUnit)
132 #ifdef _BYTESWAPIO
133 CALL MDS_BYTESWAPR4( Nr, tmp4vRef )
134 #endif
135 DO k=1,Nr
136 sRef(k) = tmp4vRef(k)
137 ENDDO
138 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
139 OPEN(iUnit, FILE=sRefFile(1:kLen), STATUS='OLD',
140 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=WORDLENGTH*2*Nr)
141 READ(iUnit,rec=1) tmp8vRef
142 CLOSE(iUnit)
143 #ifdef _BYTESWAPIO
144 CALL MDS_BYTESWAPR8( Nr, tmp8vRef )
145 #endif
146 DO k=1,Nr
147 sRef(k) = tmp8vRef(k)
148 ENDDO
149 ENDIF
150 WRITE(msgBuf,'(3A)') 'S/R LOAD_REF_FILES:',
151 & ' sRef loaded from file: ', sRefFile(1:kLen)
152 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
153 & SQUEEZE_RIGHT , myThid )
154 ENDIF
155
156 C-- Set reference Density
157 IF ( rhoRefFile .NE. ' ' ) THEN
158 C- read from file:
159 CALL MDSFINDUNIT( iUnit, myThid )
160 kLen = ILNBLNK(rhoRefFile)
161 IF (readBinaryPrec.EQ.precFloat32) THEN
162 OPEN(iUnit, FILE=rhoRefFile(1:kLen), STATUS='OLD',
163 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=WORDLENGTH*Nr)
164 READ(iUnit,rec=1) tmp4vRef
165 CLOSE(iUnit)
166 #ifdef _BYTESWAPIO
167 CALL MDS_BYTESWAPR4( Nr, tmp4vRef )
168 #endif
169 DO k=1,Nr
170 rho1Ref(k) = tmp4vRef(k)
171 ENDDO
172 ELSEIF (readBinaryPrec.EQ.precFloat64) THEN
173 OPEN(iUnit, FILE=rhoRefFile(1:kLen), STATUS='OLD',
174 & FORM='UNFORMATTED',ACCESS='DIRECT',RECL=WORDLENGTH*2*Nr)
175 READ(iUnit,rec=1) tmp8vRef
176 CLOSE(iUnit)
177 #ifdef _BYTESWAPIO
178 CALL MDS_BYTESWAPR8( Nr, tmp8vRef )
179 #endif
180 DO k=1,Nr
181 rho1Ref(k) = tmp8vRef(k)
182 ENDDO
183 ENDIF
184 WRITE(msgBuf,'(3A)') 'S/R LOAD_REF_FILES:',
185 & ' rho1Ref loaded from file: ', rhoRefFile(1:kLen)
186 CALL PRINT_MESSAGE( msgBuf, standardMessageUnit,
187 & SQUEEZE_RIGHT , myThid)
188 ENDIF
189
190 _END_MASTER(myThid)
191 C-- Everyone else must wait for the parameters to be loaded
192 _BARRIER
193
194 RETURN
195 END

  ViewVC Help
Powered by ViewVC 1.1.22