161 SUBROUTINE congrad (ng, model, outLoop, innLoop, NinnLoop, &
167 logical,
intent(in) :: lcgini
169 integer,
intent(in) :: ng, model, outloop, innloop, ninnloop
175 integer :: i, ic, j, iobs, ivec, lscale, info
177 real(dp) :: zbet, eps, preducv, preducy
179 real(dp) :: zsum, zck, zgk
181 real(dp) :: jopt, jf, jmod, jdata, jb,
jobs, jact, cff
183 real(dp),
dimension(NinnLoop) :: zu, zgam
184 real(dp),
dimension(NinnLoop) :: ztemp1, ztemp2, zu1, zu2
185 real(dp),
dimension(Ndatum(ng)) :: px, pgrad, zw, zt
186 real(dp),
dimension(Ndatum(ng)) :: zhv, zht, zd
187 real(dp),
dimension(Ninner,3) :: zwork
188 real(dp),
dimension(2*(NinnLoop-1)) :: work
189 real(dp),
dimension(Ninner,Ninner) :: zgv
191 real(dp),
dimension(innLoop,innLoop) :: ztrit, zlt, zltt
192 real(dp),
dimension(innLoop) :: tau, zwork1, ze, zeref
195 character (len=13) :: string
197 character (len=*),
parameter :: myfile = &
210 CALL wclock_on (ng, model, 85, __line__, myfile)
228 master_thread :
IF (
master)
THEN
248 minimize :
IF (innloop.eq.0)
THEN
250# if defined RBL4DVAR || \
251 defined rbl4dvar_ana_sensitivity || \
263 IF ((outloop.eq.1).or.(.not.
lhotstart))
THEN
269 cg_pxsave(iobs)=0.0_dp
279# if defined RBL4DVAR || \
280 defined rbl4dvar_ana_sensitivity || \
283 & (
obsval(iobs)-bckmodval(iobs))
286 & (
obsval(iobs)-tlmodval(iobs))
291 IF (
obserr(iobs).ne.0.0_r8)
THEN
292 pgrad(iobs)=pgrad(iobs)/sqrt(
obserr(iobs))
300 IF (
lprecond.and.(outloop.gt.1))
THEN
303 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, &
310 zgrad0(iobs,outloop)=pgrad(iobs)
326 IF (
lprecond.and.(outloop.gt.1))
THEN
329 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, &
336 IF (
obserr(iobs).ne.0.0_r8)
THEN
341 cg_qg(1,outloop)=0.0_dp
344 &
zcglwk(iobs,1,outloop)* &
369# if defined RBL4DVAR || \
370 defined rbl4dvar_ana_sensitivity || \
373 & (
obsval(iobs)-bckmodval(iobs))
376 & (
obsval(iobs)-tlmodval(iobs))
384 IF (
obserr(iobs).ne.0.0_r8)
THEN
396 pgrad(iobs)=
obsscale(iobs)*tlmodval(iobs)
397 gdgw(iobs)=pgrad(iobs)
398 IF (
obserr(iobs).ne.0.0_r8)
THEN
399 pgrad(iobs)=pgrad(iobs)/sqrt(
obserr(iobs))
407 pgrad(iobs)=pgrad(iobs)+
obsscale(iobs)* &
414 IF (
lprecond.and.(outloop.gt.1))
THEN
417 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, &
424 zgrad0(iobs,outloop)=pgrad(iobs)
441 IF (
lprecond.and.(outloop.gt.1))
THEN
444 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, &
449 IF (
obserr(iobs).ne.0.0_r8)
THEN
453 cg_qg(1,outloop)=0.0_dp
456 &
zcglwk(iobs,1,outloop)* &
477 pgrad(iobs)=
obsscale(iobs)*tlmodval(iobs)
478# if defined RBL4DVAR || defined R4DVAR || \
479 defined sensitivity_4dvar || defined tl_rbl4dvar || \
481 tlmodval_s(iobs,innloop,outloop)=tlmodval(iobs)
486 IF (
obserr(iobs).ne.0.0_r8)
THEN
487 pgrad(iobs)=pgrad(iobs)/sqrt(
obserr(iobs))
492 zt(iobs)=
zcglwk(iobs,innloop,outloop)
497 IF (
lprecond.and.(outloop.gt.1))
THEN
500 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, zt)
504 pgrad(iobs)=pgrad(iobs)+
obsscale(iobs)*zt(iobs)
509 IF (
lprecond.and.(outloop.gt.1))
THEN
512 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, pgrad)
518 &
zcglwk(iobs,innloop,outloop)* &
524 IF (
cg_delta(innloop,outloop).le.0.0_dp)
THEN
534 pgrad(iobs)=pgrad(iobs)-
cg_delta(innloop,outloop)* &
535 &
zcglwk(iobs,innloop,outloop)
537 IF (innloop.gt.1)
THEN
539 pgrad(iobs)=pgrad(iobs)-
cg_beta(innloop,outloop)* &
540 &
zcglwk(iobs,innloop-1,outloop)
547 cg_dla(ivec,outloop)=0.0_dp
549 cg_dla(ivec,outloop)=
cg_dla(ivec,outloop)+pgrad(iobs)* &
550 &
zcglwk(iobs,ivec,outloop)
553 pgrad(iobs)=pgrad(iobs)- &
555 &
zcglwk(iobs,ivec,outloop)
559 cg_beta(innloop+1,outloop)=0.0_dp
562 & pgrad(iobs)*pgrad(iobs)
567 zcglwk(iobs,innloop+1,outloop)=pgrad(iobs)/ &
571 cg_qg(innloop+1,outloop)=0.0_dp
573 cg_qg(innloop+1,outloop)=
cg_qg(innloop+1,outloop)+ &
574 &
zcglwk(iobs,innloop+1,outloop)* &
592 ztrit(i,i+1)=
cg_beta(i+1,outloop)
595 ztrit(i,i-1)=
cg_beta(i,outloop)
597 CALL sqlq(innloop, ztrit, tau, zwork1)
618 ze(i)=-
cg_qg(i,outloop)
630 zsum=zsum+ze(j)*zeref(j)
633 ze(j)=ze(j)-tau(i)*zsum*zeref(j)
639 zgk=sqrt(zlt(innloop,innloop)*zlt(innloop,innloop)+ &
641 zck=zlt(innloop,innloop)/zgk
642 ze(innloop)=zck*ze(innloop)
647 ze(j)=ze(j)/zltt(j,j)
649 ze(i)=ze(i)-ze(j)*zltt(i,j)
665 zu(1)=-
cg_qg(1,outloop)/zbet
667 zgam(ivec)=
cg_beta(ivec,outloop)/zbet
672 zwork(innloop,3)=zu(innloop)
674 DO ivec=innloop-1,1,-1
675 zu(ivec)=zu(ivec)-zgam(ivec+1)*zu(ivec+1)
676 zwork(ivec,3)=zu(ivec)
680 zw(iobs)=
zgrad0(iobs,outloop)+ &
681 &
cg_beta(innloop+1,outloop)* &
682 &
zcglwk(iobs,innloop+1,outloop)* &
689 px(iobs)=px(iobs)+
zcglwk(iobs,ivec,outloop)*zwork(ivec,3)
690 zw(iobs)=zw(iobs)-
zcglwk(iobs,ivec,outloop)* &
691 &
cg_qg(ivec,outloop)
698 IF (
lprecond.and.(outloop.gt.1))
THEN
701 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, px)
708 preducy=preducy+zw(iobs)*zw(iobs)
714 IF (
lprecond.and.(outloop.gt.1))
THEN
717 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, zw)
722 preducv=preducv+zw(iobs)*zw(iobs)
730 eps=abs(
cg_beta(innloop+1,outloop)*zwork(innloop,3))
756 IF (outloop.eq.1.or.(.not.
lhotstart))
THEN
758 jopt=jopt-px(iobs)*
vgrad0(iobs)
759 IF (
obserr(iobs).ne.0.0_r8)
THEN
762 jdata=jdata+px(iobs)*px(iobs)
767 jopt=jopt-(px(iobs)+cg_pxsave(iobs))*
cg_innov(iobs)
768 IF (
obserr(iobs).ne.0.0_r8)
THEN
772 & (px(iobs)+cg_pxsave(iobs))* &
773 & (px(iobs)+cg_pxsave(iobs))
784 IF (
obserr(iobs).ne.0.0_r8)
THEN
785 zhv(iobs)=zd(iobs)/sqrt(
obserr(iobs))
791 ztemp1(ivec)=ztemp1(ivec)+ &
792 &
zcglwk(iobs,ivec,outloop)*zhv(iobs)
813 zsum=zsum+ze(j)*zeref(j)
816 ze(j)=ze(j)-tau(i)*zsum*zeref(j)
822 zgk=sqrt(zlt(innloop,innloop)*zlt(innloop,innloop)+ &
824 zck=zlt(innloop,innloop)/zgk
825 ze(innloop)=zck*ze(innloop)
830 ze(j)=ze(j)/zltt(j,j)
832 ze(i)=ze(i)-ze(j)*zltt(i,j)
844 zu1(1)=ztemp1(1)/zbet
846 zgam(ivec)=
cg_beta(ivec,outloop)/zbet
848 &
cg_beta(ivec,outloop)*zgam(ivec)
849 zu1(ivec)=(ztemp1(ivec)- &
850 &
cg_beta(ivec,outloop)*zu1(ivec-1))/zbet
852 ztemp2(innloop)=zu1(innloop)
854 DO ivec=innloop-1,1,-1
855 zu1(ivec)=zu1(ivec)-zgam(ivec+1)*zu1(ivec+1)
856 ztemp2(ivec)=zu1(ivec)
864 zhv(iobs)=zhv(iobs)+ &
865 & ztemp2(ivec)*tlmodval_s(iobs,ivec,outloop)
874 IF (
obserr(iobs).ne.0.0_r8)
THEN
875 ztemp1(ivec)=ztemp1(ivec)+ &
876 &
zcglwk(iobs,ivec,outloop)*zhv(iobs)/ &
899 zsum=zsum+ze(j)*zeref(j)
902 ze(j)=ze(j)-tau(i)*zsum*zeref(j)
908 zgk=sqrt(zlt(innloop,innloop)*zlt(innloop,innloop)+ &
910 zck=zlt(innloop,innloop)/zgk
911 ze(innloop)=zck*ze(innloop)
916 ze(j)=ze(j)/zltt(j,j)
918 ze(i)=ze(i)-ze(j)*zltt(i,j)
930 zu2(1)=ztemp1(1)/zbet
932 zgam(ivec)=
cg_beta(ivec,outloop)/zbet
934 &
cg_beta(ivec,outloop)*zgam(ivec)
935 zu2(ivec)=(ztemp1(ivec)- &
936 &
cg_beta(ivec,outloop)*zu2(ivec-1))/zbet
938 ztemp2(innloop)=zu2(innloop)
939 DO ivec=innloop-1,1,-1
940 zu2(ivec)=zu2(ivec)-zgam(ivec+1)*zu2(ivec+1)
941 ztemp2(ivec)=zu2(ivec)
949 IF (
obserr(iobs).ne.0.0_r8)
THEN
950 zht(iobs)=zht(iobs)+ &
951 & ztemp2(ivec)*
zcglwk(iobs,ivec,outloop)/ &
958 IF (
obserr(iobs).ne.0.0_r8)
THEN
959 cff=cg_pxsave(iobs)/sqrt(
obserr(iobs))
960 jb=jb+zd(iobs)*zht(iobs)-2.0_dp*cff*zhv(iobs)+ &
968 IF (outloop.eq.1.or.(.not.
lhotstart))
THEN
970 IF (
obserr(iobs).ne.0.0_r8)
THEN
971 cff=zhv(iobs)-zd(iobs)
977 IF (
obserr(iobs).ne.0.0_r8)
THEN
989 IF (innloop.eq.ninnloop)
THEN
1012 IF (
lprecond.and.(outloop.gt.1))
THEN
1015 CALL rprecond (ng, lscale, ltrans, outloop, ninnloop, &
1023 IF (
obserr(iobs).ne.0.0_r8)
THEN
1035 & outloop, innloop, eps, &
1036 & outloop, innloop, preducy, &
1037 & outloop, innloop, preducv, &
1038 & outloop, innloop, jf, &
1039 & outloop, innloop, jdata, &
1040 & outloop, innloop, jmod, &
1041 & outloop, innloop, jopt, &
1042 & outloop, innloop, jb, &
1043 & outloop, innloop,
jobs, &
1044 & outloop, innloop, jact, &
1048 &
cg_beta(ivec,outloop), zwork(ivec,3)
1064 & trim(adjustl(string)), &
1070 & trim(adjustl(string))
1082 & trim(adjustl(string)), &
1085 string=
'not converged'
1088 & trim(adjustl(string))
1100 IF (innloop.eq.ninnloop)
THEN
1106 zwork(ivec,1)=
cg_beta(ivec+1,outloop)
1113 CALL dsteqr (
'I', innloop,
cg_ritz(1,outloop), zwork(1,1), &
1114 & zgv,
ninner, work, info)
1116 WRITE (
stdout,*)
' CONGRAD - Error in DSTEQR: info = ', &
1124 cg_zv(i,j,outloop)=zgv(i,j)
1132 &
cg_zv(innloop,ivec,outloop))
1139 WRITE (
stdout,*)
' CONGRAD - negative Ritz value found.'
1162 & trim(adjustl(string)), &
1165 string=
'not converged'
1168 & trim(adjustl(string))
1174 CALL rpevecs (ng, outloop, ninnloop)
1178 END IF master_thread
1197# if defined RBL4DVAR || defined R4DVAR || \
1198 defined sensitivity_4dvar || defined tl_rbl4dvar || \
1209 CALL mp_bcastf (ng, model, cg_pxsave(:))
1226 & jf, jdata, jmod, jopt, jb,
jobs, jact, &
1233 CALL wclock_off (ng, model, 85, __line__, myfile)
1236 20
FORMAT (/,
' CONGRAD - Fatal error, not possitive definite', &
1237 &
' algorithm:',/, &
1238 & /,11x,
'cg_delta = ',1p,e15.8,0p,3x,
'(',i3.3,
', ',i3.3,
')')
1239 30
FORMAT (/,
' CONGRAD - Conjugate Gradient Information:',/, &
1240 & /,11x,
'Ndatum = ',i7.7,/,/, &
1241 & 1x,
'(',i3.3,
',',i3.3,
'): ', &
1242 &
'Residual estimate, eps = ', &
1243 & 1p,e14.7,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1244 &
'Reduction in gradient norm, Greduc y-space = ', &
1245 & 1p,e14.7,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1246 &
'Reduction in gradient norm, Greduc v-space = ', &
1247 & 1p,e14.7,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1248 &
'First guess initial data misfit, Jf = ', &
1249 & 1p,e14.7,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1250 &
'State estimate data misfit, Jdata = ', &
1251 & 1p,e14.7,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1252 &
'Model penalty function, Jmod = ', &
1253 & 1p,e14.7,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1254 &
'Optimal penalty function, Jopt = ', &
1255 & 1p,e14.7,/,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1256 &
'Actual Model penalty function, Jb = ', &
1257 & 1p,e14.7,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1258 &
'Actual data penalty function, Jobs = ', &
1259 & 1p,e14.7,/,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1260 &
'Actual total penalty function, Jact = ', &
1261 & 1p,e14.7,/,/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1262 &
'Lanczos vectors - cg_delta, cg_beta, zwork:',/)
1263 40
FORMAT (6x,i3.3,4x,3(1p,e15.8,5x))
1264 50
FORMAT (6x,i3.3,24x,1p,e15.8)
1265 60
FORMAT (/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1266 &
'Ritz eigenvalues used in preconditioning, ', &
1267 &
'nConvRitz = ',i3.3,/)
1268 70
FORMAT (6x,i3.3,2x,1p,e14.7,2x,1p,e14.7,2x,a,5x,
'('a,i3.3,
')')
1269 80
FORMAT (6x,i3.3,2x,1p,e14.7,2x,1p,e14.7,2x,a)
1270 90
FORMAT (/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1271 &
'Ritz eigenvalues used in preconditioning, ', &
1272 &
'RitzMaxErr = ',1p,e12.5,/)
1273100
FORMAT (/,1x,
'(',i3.3,
',',i3.3,
'): ', &
1274 &
'New Ritz eigenvalues and their accuracy, ', &
1275 &
'RitzMaxErr = ',1p,e12.5,/)
1741 & NinnLoop, Jf, Jdata, Jmod, &
1742 & Jopt, Jb, Jobs, Jact, &
1750 integer,
intent(in) :: ng, model, innloop, outloop, ninnloop
1752 real(dp),
intent(in) :: jf, jdata, jmod, jopt, preducv, preducy
1753 real(dp),
intent(in) :: jb,
jobs, jact
1757 integer ::
nconv, status
1759 character (len=*),
parameter :: myfile = &
1760 & __FILE__//
", cg_write_congrad_nf90"
1773 & ncid =
dav(ng)%ncid)
1779 & ncid =
dav(ng)%ncid)
1784 IF (innloop.eq.
ninner)
THEN
1787 & (/outloop/), (/1/), &
1788 & ncid =
dav(ng)%ncid)
1794 IF (innloop.eq.
ninner)
THEN
1798 & (/1,outloop/), (/
nconv,1/), &
1799 & ncid =
dav(ng)%ncid)
1805 IF (innloop.gt.0)
THEN
1809 & ncid =
dav(ng)%ncid)
1815 IF (innloop.gt.0)
THEN
1819 & ncid =
dav(ng)%ncid)
1825 IF (innloop.gt.0)
THEN
1829 & ncid =
dav(ng)%ncid)
1835 IF (innloop.eq.0)
THEN
1839 & ncid =
dav(ng)%ncid)
1845 & ncid =
dav(ng)%ncid)
1851 IF (innloop.gt.0)
THEN
1855 & ncid =
dav(ng)%ncid)
1861 IF (innloop.gt.0)
THEN
1863 &
'cg_Greduc_y', preducy, &
1864 & (/innloop,outloop/), (/1,1/), &
1865 & ncid =
dav(ng)%ncid)
1869 &
'cg_Greduc_v', preducv, &
1870 & (/innloop,outloop/), (/1,1/), &
1871 & ncid =
dav(ng)%ncid)
1877 IF (innloop.gt.0)
THEN
1881 & ncid =
dav(ng)%ncid)
1887 IF (innloop.gt.0)
THEN
1891 & ncid =
dav(ng)%ncid)
1897 IF (innloop.gt.0)
THEN
1899 &
'cg_zv',
cg_zv(:,:,outloop), &
1901 & ncid =
dav(ng)%ncid)
1909 & (/innloop+1,outloop/), (/1,1/), &
1910 & ncid =
dav(ng)%ncid)
1917 & (/innloop+1,outloop/), (/1,1/), &
1918 & ncid =
dav(ng)%ncid)
1925 & (/innloop+1,outloop/), (/1,1/), &
1926 & ncid =
dav(ng)%ncid)
1933 & (/innloop+1,outloop/), (/1,1/), &
1934 & ncid =
dav(ng)%ncid)
1941 & (/innloop+1,outloop/), (/1,1/), &
1942 & ncid =
dav(ng)%ncid)
1949 & (/innloop+1,outloop/), (/1,1/), &
1950 & ncid =
dav(ng)%ncid)
1957 & (/innloop+1,outloop/), (/1,1/), &
1958 & ncid =
dav(ng)%ncid)
1963 IF (innloop.eq.ninnloop)
THEN
1965 &
'cg_pxsave', cg_pxsave, &
1966 & (/1,outloop/), (/
ndatum(ng),1/), &
1967 & ncid =
dav(ng)%ncid)
1973 IF (innloop.eq.0)
THEN
1975 &
'zgrad0',
zgrad0(:,outloop), &
1976 & (/1,outloop/), (/
ndatum(ng),1/), &
1977 & ncid =
dav(ng)%ncid)
1984 &
'zcglwk',
zcglwk(:,innloop+1,outloop), &
1985 & (/1,innloop+1,outloop/), &
1987 & ncid =
dav(ng)%ncid)
1992 IF (innloop.gt.0)
THEN
1995 & tlmodval_s(:,innloop,outloop), &
1996 & (/1,innloop,outloop/), &
1998 & ncid =
dav(ng)%ncid)
2015 & NinnLoop, Jf, Jdata, Jmod, &
2016 & Jopt, Jb, Jobs, Jact, &
2024 integer,
intent(in) :: ng, model, innLoop, outLoop, NinnLoop
2026 real(dp),
intent(in) :: Jf, Jdata, Jmod, Jopt, preducv, preducy
2027 real(dp),
intent(in) :: Jb, Jobs, Jact
2031 integer :: Nconv, status
2033 character (len=*),
parameter :: MyFile = &
2034 & __FILE__//
", cg_write_congrad_pio"
2047 & piofile =
dav(ng)%pioFile)
2053 & piofile =
dav(ng)%pioFile)
2058 IF (innloop.eq.
ninner)
THEN
2061 & (/outloop/), (/1/), &
2062 & piofile =
dav(ng)%pioFile)
2068 IF (innloop.eq.
ninner)
THEN
2071 &
'Ritz',
ritz(1:nconv), &
2072 & (/1,outloop/), (/nconv,1/), &
2073 & piofile =
dav(ng)%pioFile)
2079 IF (innloop.gt.0)
THEN
2083 & piofile =
dav(ng)%pioFile)
2089 IF (innloop.gt.0)
THEN
2093 & piofile =
dav(ng)%pioFile)
2099 IF (innloop.gt.0)
THEN
2103 & piofile =
dav(ng)%pioFile)
2109 IF (innloop.eq.0)
THEN
2113 & piofile =
dav(ng)%pioFile)
2119 & piofile =
dav(ng)%pioFile)
2125 IF (innloop.gt.0)
THEN
2129 & piofile =
dav(ng)%pioFile)
2135 IF (innloop.gt.0)
THEN
2137 &
'cg_Greduc_y', preducy, &
2138 & (/innloop,outloop/), (/1,1/), &
2139 & piofile =
dav(ng)%pioFile)
2143 &
'cg_Greduc_v', preducv, &
2144 & (/innloop,outloop/), (/1,1/), &
2145 & piofile =
dav(ng)%pioFile)
2151 IF (innloop.gt.0)
THEN
2155 & piofile =
dav(ng)%pioFile)
2161 IF (innloop.gt.0)
THEN
2165 & piofile =
dav(ng)%pioFile)
2171 IF (innloop.gt.0)
THEN
2173 &
'cg_zv',
cg_zv(:,:,outloop), &
2175 & piofile =
dav(ng)%pioFile)
2183 & (/innloop+1,outloop/), (/1,1/), &
2184 & piofile =
dav(ng)%pioFile)
2191 & (/innloop+1,outloop/), (/1,1/), &
2192 & piofile =
dav(ng)%pioFile)
2199 & (/innloop+1,outloop/), (/1,1/), &
2200 & piofile =
dav(ng)%pioFile)
2207 & (/innloop+1,outloop/), (/1,1/), &
2208 & piofile =
dav(ng)%pioFile)
2215 & (/innloop+1,outloop/), (/1,1/), &
2216 & piofile =
dav(ng)%pioFile)
2223 & (/innloop+1,outloop/), (/1,1/), &
2224 & piofile =
dav(ng)%pioFile)
2231 & (/innloop+1,outloop/), (/1,1/), &
2232 & piofile =
dav(ng)%pioFile)
2237 IF (innloop.eq.ninnloop)
THEN
2239 &
'cg_pxsave', cg_pxsave, &
2240 & (/1,outloop/), (/
ndatum(ng),1/), &
2241 & piofile =
dav(ng)%pioFile)
2247 IF (innloop.eq.0)
THEN
2249 &
'zgrad0',
zgrad0(:,outloop), &
2250 & (/1,outloop/), (/
ndatum(ng),1/), &
2251 & piofile =
dav(ng)%pioFile)
2258 &
'zcglwk',
zcglwk(:,innloop+1,outloop), &
2259 & (/1,innloop+1,outloop/), &
2261 & piofile =
dav(ng)%pioFile)
2266 IF (innloop.gt.0)
THEN
2269 & tlmodval_s(:,innloop,outloop), &
2270 & (/1,innloop,outloop/), &
2272 & piofile =
dav(ng)%pioFile)