*IF DEF,SCMA S_DPGRAF.2 C *****************************COPYRIGHT****************************** S_DPGRAF.3 C (c) CROWN COPYRIGHT 1998, METEOROLOGICAL OFFICE, All Rights Reserved. S_DPGRAF.4 C S_DPGRAF.5 C Use, duplication or disclosure of this code is subject to the S_DPGRAF.6 C restrictions as set forth in the contract. S_DPGRAF.7 C S_DPGRAF.8 C Meteorological Office S_DPGRAF.9 C London Road S_DPGRAF.10 C BRACKNELL S_DPGRAF.11 C Berkshire UK S_DPGRAF.12 C RG12 2SZ S_DPGRAF.13 C S_DPGRAF.14 C If no contract has been raised with this copy of the code, the use, S_DPGRAF.15 C duplication or disclosure of it is strictly prohibited. Permission S_DPGRAF.16 C to do so must first be obtained in writing from the Head of Numerical S_DPGRAF.17 C Modelling at the above address. S_DPGRAF.18 C ******************************COPYRIGHT****************************** S_DPGRAF.19 C S_DPGRAF.20 C Subroutine DUMP_GRAF S_DPGRAF.21 C Purpose:- To DUMP diagnostics for graphics S_DPGRAF.22 C S_DPGRAF.23 C Programmer:- P.M. COX S_DPGRAF.24 C S_DPGRAF.25 C Modification History: S_DPGRAF.26 C Version Date S_DPGRAF.27 C 4.5 07/98 SCM integrated as a standard UM configuration S_DPGRAF.28 C JC Thil. S_DPGRAF.29 C S_DPGRAF.30 C = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = S_DPGRAF.31 C S_DPGRAF.32Subroutine DUMP_GRAF( 3S_DPGRAF.33 ! IN dimension of dump array. S_DPGRAF.34 & points,nvars S_DPGRAF.35 & ,nfor, nbl_levs, nsoilt_levs, nsoilm_levs, ntrop S_DPGRAF.36 ! S_DPGRAF.37 & ,dump, j, time, day, iun) S_DPGRAF.38 C--------------------------------------------------------------------- S_DPGRAF.39 C Arguments S_DPGRAF.40 C--------------------------------------------------------------------- S_DPGRAF.41 Implicit none S_DPGRAF.42 S_DPGRAF.43 Integer S_DPGRAF.44 & points ! IN no of model points. S_DPGRAF.45 & ,nvars ! IN no. of variables in dump and S_DPGRAF.46 ! is equal to NPRIMVARS + X S_DPGRAF.47 ! where X is any no. of variables S_DPGRAF.48 ! (default 71) S_DPGRAF.49 & ,nfor ! IN Number terms for observational S_DPGRAF.50 ! forcing S_DPGRAF.51 & ,nbl_levs ! IN Number of Boundary layer levels S_DPGRAF.52 & ,nsoilt_levs ! IN Number of soil temperature S_DPGRAF.53 ! levels S_DPGRAF.54 & ,nsoilm_levs ! IN Number of soil moisture levels S_DPGRAF.55 & ,ntrop ! IN Max number of levels in the S_DPGRAF.56 ! troposphere S_DPGRAF.57 & ,day ! Actual day in year S_DPGRAF.58 Real S_DPGRAF.59 & dump(points,nvars,*) S_DPGRAF.60 & ,time ! Actual time in day in secs. S_DPGRAF.61 C S_DPGRAF.62 C Local variables S_DPGRAF.63 C S_DPGRAF.64 S_DPGRAF.65 Integer S_DPGRAF.66 & iun ! Unit for output S_DPGRAF.67 & ,i,j,k ! Counters S_DPGRAF.68 Real S_DPGRAF.69 & sdump(nvars) ! Temporary space. S_DPGRAF.70 C S_DPGRAF.71 Do k = 1, points S_DPGRAF.72 Do i = 1, nvars S_DPGRAF.73 sdump(i) = real(dump(k, i, j)) S_DPGRAF.74 enddo S_DPGRAF.75 Write (iun,*) day,time S_DPGRAF.76 Write (iun,'(5(1PE17.10,","))') (sdump(i), i = 1, nvars) S_DPGRAF.77 Enddo S_DPGRAF.78 Return S_DPGRAF.79 End ! Subroutine DUMP_GRAF S_DPGRAF.80 S_DPGRAF.81
Subroutine write_header( 1S_DPGRAF.82 & outunit, nlevs, nwet, nbl_levs S_DPGRAF.83 & ,nsoilt_levs, nsoilm_levs, n_types S_DPGRAF.84 & ,timestep, ntrad, ndayin, nminin, nsecin, ndump S_DPGRAF.85 & ,ak,bk,akh,bkh,single_step S_DPGRAF.86 & ) S_DPGRAF.87 S_DPGRAF.88 Implicit none S_DPGRAF.89 S_DPGRAF.90 Integer S_DPGRAF.91 S_DPGRAF.92 & outunit, nlevs, nwet, nbl_levs S_DPGRAF.93 & ,nsoilt_levs, nsoilm_levs, n_types S_DPGRAF.94 & ,ntrad, ndayin, nhourin, nminin, nsecin, ndump S_DPGRAF.95 S_DPGRAF.96 Real S_DPGRAF.97 & timestep S_DPGRAF.98 & ,ak(nlevs) S_DPGRAF.99 & ,bk(nlevs) S_DPGRAF.100 & ,akh(nlevs+1) S_DPGRAF.101 & ,bkh(nlevs+1) S_DPGRAF.102 S_DPGRAF.103 Logical S_DPGRAF.104 & single_step ! Denotes single timestep file S_DPGRAF.105 S_DPGRAF.106 Integer S_DPGRAF.107 & ii ! Dummy variable for Ak and Bk S_DPGRAF.108 & ,jj ! Dummy variable to calc press S_DPGRAF.109 & ,kount ! Dummy variable to calc press S_DPGRAF.110 & ,mremak ! Remainder used to calc press S_DPGRAF.111 & ,mdivak ! Iteration no to calc press S_DPGRAF.112 Character*50 S_DPGRAF.113 & outfmt S_DPGRAF.114 S_DPGRAF.115 nhourin = int(nminin/60.0+nsecin/3600.0) S_DPGRAF.116 if (single_step) then S_DPGRAF.117 Write(outunit,*) "single timestep data" S_DPGRAF.118 endif S_DPGRAF.119 Write(outunit,fmt='(''vn4.5,nlev,nwet,nbllevs,nsoilt,nsoilm,'', S_DPGRAF.120 & ''ntypes,timestep,radtimestep,ndays,nhours,ndump-5i4,2f6.1,'', S_DPGRAF.121 & ''3i4'')') S_DPGRAF.122 Write(outunit,fmt='(6i4,2f6.1,3i4)') S_DPGRAF.123 & nlevs,nwet,nbl_levs, S_DPGRAF.124 & nsoilt_levs,nsoilm_levs,n_types,timestep, S_DPGRAF.125 & ntrad*timestep,ndayin,nhourin,ndump S_DPGRAF.126 ! S_DPGRAF.127 mdivak=nlevs/3.0 S_DPGRAF.128 mremak=nlevs-3*mdivak S_DPGRAF.129 Write(outfmt,fmt='("(",i3,"(e22.15,'',''))")') mremak S_DPGRAF.130 ! ak S_DPGRAF.131 Do ii = 1, mdivak S_DPGRAF.132 kount=3*ii-3 S_DPGRAF.133 Write(outunit,fmt='(3(e22.15,'',''))')(ak(kount+jj),jj=1,3) S_DPGRAF.134 enddo S_DPGRAF.135 If (mremak .ne. 0) Write(outunit, fmt=outfmt) S_DPGRAF.136 & (ak(jj), jj=3*mdivak+1, nlevs) S_DPGRAF.137 ! bk S_DPGRAF.138 Do ii = 1, mdivak S_DPGRAF.139 kount = 3*ii-3 S_DPGRAF.140 Write(outunit, fmt='(3(e22.15,'',''))') (bk(kount+jj), jj=1,3) S_DPGRAF.141 enddo S_DPGRAF.142 If (mremak .ne. 0) Write(outunit,fmt=outfmt) S_DPGRAF.143 & (bk(jj), jj = 3*mdivak+1, nlevs) S_DPGRAF.144 ! S_DPGRAF.145 mdivak=(nlevs+1)/3.0 S_DPGRAF.146 mremak=(nlevs+1)-3*mdivak S_DPGRAF.147 Write(outfmt,fmt='("(",i3,"(e22.15,'',''))")') mremak S_DPGRAF.148 ! akh S_DPGRAF.149 Do ii=1,mdivak S_DPGRAF.150 kount=3*ii-3 S_DPGRAF.151 Write(outunit,fmt='(3(e22.15,'',''))')(akh(kount+jj),jj=1,3) S_DPGRAF.152 enddo S_DPGRAF.153 If (mremak .ne. 0) Write(outunit,fmt=outfmt) S_DPGRAF.154 & (akh(jj), jj=3*mdivak+1, nlevs+1) S_DPGRAF.155 ! bkh S_DPGRAF.156 Do ii=1,mdivak S_DPGRAF.157 kount=3*ii-3 S_DPGRAF.158 Write(outunit,fmt='(3(e22.15,'',''))')(bkh(kount+jj),jj=1,3) S_DPGRAF.159 enddo S_DPGRAF.160 If (mremak .ne. 0) Write(outunit,fmt=outfmt) S_DPGRAF.161 & (bkh(jj), jj = 3*mdivak+1, nlevs+1) S_DPGRAF.162 ! S_DPGRAF.163 ! S_DPGRAF.164 Return S_DPGRAF.165 End S_DPGRAF.166 *ENDIF S_DPGRAF.167