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

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

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


Revision 1.1 - (hide annotations) (download)
Fri Sep 5 20:15:28 2008 UTC (15 years, 8 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 jmc 1.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