UPP  V11.0.0
 All Data Structures Files Functions Pages
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