UPP v11.0.0
Loading...
Searching...
No Matches
get_postfilename.f
1 subroutine get_postfilename(fname)
2!
3! ABSTRACT: THIS SUBROUTINE GENERATE POST FILE NAME FROM THE DATSET IN
4! POST CONTROL FILE
5!
6! Program log:
7! 11-02 Jun Wang generate code from subroutine gribit
8!
9 use ctlblk_mod, only : ifhr, me, modelname, ifmin
10 use rqstfld_mod, only : ritehd, datset, iget
11!
12 implicit none
13!
14 character(*),intent(inout) :: fname
15!
16!local vars
17 integer IHR,KDAT,KENV,KTHR,NDIG
18 CHARACTER*4 RESTHR,BLANK
19 CHARACTER*10 DESCR2,DESCR3
20 character CFHOUR*40,CFORM*40
21 CHARACTER*180 ENVAR
22 CHARACTER*255 PGBOUT,IPVOUT,D3DOUT
23!
24 DATA blank /' '/
25!
26 IF (ritehd) THEN
27!
28! PUT FORECAST HOUR INTO DIR PREFIX FOR GRIB FILE.
29 ihr = ifhr
30!
31! GET FULL PATH FOR OUTPUT FILE FROM ENVIRONMENT VARIABLE
32! COMSP WHICH IS SET IN THE SCRIPT RUNNING THE MODEL.
33!
34! CONSTRUCT FULL PATH-FILENAME FOR OUTPUT FILE
35 envar = ' '
36 resthr = ' '
37 pgbout = ' '
38 ipvout = ' '
39 d3dout = ' '
40 CALL getenv('COMSP',envar)
41 CALL getenv('tmmark',resthr)
42 CALL getenv('PGBOUT',pgbout)
43 CALL getenv('IPVOUT',ipvout)
44 CALL getenv('D3DOUT',d3dout)
45 kdat = index(datset,' ') -1
46 IF (kdat<=0) kdat = len(datset)
47 kenv = index(envar,' ') -1
48 IF (kenv<=0) kenv = len(envar)
49 kthr = index(resthr,' ') -1
50 IF (kthr<=0) kthr = len(resthr)
51 if(me==0) print *,'PGBOUT=',trim(pgbout)
52!
53 if(me==0)print *,'in get postfilename, ritehd=',ritehd,'ifhr=',ifhr,'modelname=',modelname, &
54 'ENVAR(1:4)=',envar(1:4),'RESTHR(1:4)=',resthr(1:4),'ifmin=',ifmin,'DATSET(1:KDAT)=', &
55 datset(1:kdat)
56!
57! CONSTRUCT FULL PATH-FILENAME FOR OUTPUT FILE
58 IF(modelname=='GFS')THEN
59 IF(d3dout(1:4)/=blank .AND. &
60 ((iget(354)>0).OR.(iget(355)>0).OR. &
61 (iget(356)>0).OR.(iget(357)>0).OR. &
62 (iget(358)>0).OR.(iget(359)>0).OR. &
63 (iget(360)>0).OR.(iget(361)>0).OR. &
64 (iget(362)>0).OR.(iget(363)>0).OR. &
65 (iget(364)>0).OR.(iget(365)>0).OR. &
66 (iget(366)>0).OR.(iget(367)>0).OR. &
67 (iget(368)>0).OR.(iget(369)>0).OR. &
68 (iget(370)>0).OR.(iget(371)>0).OR. &
69 (iget(372)>0).OR.(iget(373)>0).OR. &
70 (iget(374)>0).OR.(iget(375)>0)))THEN
71 fname = d3dout
72 if(me==0)print*,' FNAME FROM D3DOUT=',trim(fname)
73 ELSE IF(ipvout(1:4)/=blank .AND. &
74 index(datset(1:kdat),"IPV")>0 .AND. &
75 ((iget(332)>0).OR.(iget(333)>0).OR. &
76 (iget(334)>0).OR.(iget(335)>0).OR. &
77 (iget(351)>0).OR.(iget(352)>0).OR. &
78 (iget(353)>0).OR.(iget(378)>0)))THEN
79 fname = ipvout
80 if(me==0)print*,' FNAME FROM IPVOUT=',trim(fname)
81 ELSE IF(pgbout(1:4)/=blank)THEN
82 fname = pgbout
83 if(me==0)print*,' FNAME FROM PGBOUT=',trim(fname)
84 ELSE
85 ndig=max(log10(ihr+0.5)+1.,2.)
86! WRITE(CFORM,'("('.GrbF',I",I1,".",I1,")")') NDIG,NDIG
87 WRITE(cform,'("(I",I1,".",I1,")")') ndig,ndig
88 WRITE(cfhour,cform) ihr
89 fname = datset(1:kdat) //'.GrbF'// cfhour
90 if(me==0)print *,' FNAME=',trim(fname)
91 END IF
92! IF(MODELNAME=='GFS'.AND.PGBOUT(1:4)/=BLANK)THEN
93! FNAME = PGBOUT
94! PRINT*,' FNAME FROM PGBOUT=',trim(FNAME)
95!
96 ELSEIF (envar(1:4)==blank.AND.resthr(1:4)==blank) THEN
97 IF(ifmin >= 1)THEN
98 WRITE(descr2,1011) ihr
99 WRITE(descr3,1012) ifmin
100 fname = datset(1:kdat) // trim(descr2) //'.'// descr3(1:2)
101 ELSE
102 ndig=max(log10(ihr+0.5)+1.,2.)
103! WRITE(CFORM,'("('.GrbF',I",I1,".",I1,")")') NDIG,NDIG
104 WRITE(cform,'("(I",I1,".",I1,")")') ndig,ndig
105 WRITE(cfhour,cform) ihr
106 fname = datset(1:kdat) //'.GrbF'// cfhour
107 if(me==0)print *,' FNAME=',trim(fname)
108!
109! IF(IHR<100)THEN
110! WRITE(DESCR2,1011) IHR
111! ELSE
112! WRITE(DESCR2,1013) IHR
113! END IF
114 1011 FORMAT('.GrbF',i2.2)
115!1013 FORMAT('.GrbF',I3.3)
116! FNAME = DATSET(1:KDAT) // DESCR2
117 END IF
118!
119 ELSEIF(envar(1:4)==blank.AND.resthr(1:4)/=blank) THEN
120 IF(ifmin >= 1)THEN
121 WRITE(descr3,1012) ifmin
122 IF (ihr<100) THEN
123 WRITE(descr2,1012) ihr
124 fname = datset(1:kdat) // descr2(1:2) //'.'// descr3(1:2) &
125 //'.'// resthr
126 ELSE
127 WRITE(descr2,1014) ihr
128 fname = datset(1:kdat) // descr2(1:3) //'.'// descr3(1:2) &
129 //'.'// resthr
130 ENDIF
131 ELSE
132 IF (ihr<100) THEN
133 WRITE(descr2,1012) ihr
134 fname = datset(1:kdat) // descr2(1:2) //'.'// resthr
135 ELSE
136 WRITE(descr2,1014) ihr
137 fname = datset(1:kdat) // descr2(1:3) //'.'// resthr
138 ENDIF
139 end if
140 ELSE
141 IF(ifmin >= 1)THEN
142 WRITE(descr3,1012) ifmin
143 IF (ihr<100) THEN
144 WRITE(descr2,1012) ihr
145 fname = envar(1:kenv) // datset(1:kdat) // descr2(1:2) &
146 //'.'// descr3(1:2) //'.'// resthr
147 ELSE
148 WRITE(descr2,1014) ihr
149 fname = envar(1:kenv) // datset(1:kdat) // descr2(1:3) &
150 //'.'// descr3(1:2) //'.'// resthr
151 ENDIF
152 ELSE
153 IF (ihr<100) THEN
154 WRITE(descr2,1012) ihr
155 fname = envar(1:kenv) // datset(1:kdat) // descr2(1:2) &
156 //'.'// resthr
157 1012 FORMAT(i2.2)
158 1014 FORMAT(i3.3)
159 ELSE
160 WRITE(descr2,1014) ihr
161 fname = envar(1:kenv) // datset(1:kdat) // descr2(1:3) &
162 //'.'// resthr
163 ENDIF
164 end if
165 ENDIF
166!
167 ENDIF
168 if(me==0) then
169 print*,'FNAME= ',trim(fname)
170 print *,'end of get post filename'
171 endif
172
173 end subroutine get_postfilename