33 integer,
intent(in) :: ng, model, outLoop, NinnLoop
37 integer :: i, j, iobs, ivec, innLoop
43 integer,
dimension(NinnLoop) :: ipiv
48 real(r8),
dimension(NinnLoop) :: zu, zgam, zt
50 real(r8) :: zsum, zck, zgk
51 real(r8),
dimension(NinnLoop,NinnLoop) :: ztriT, zLT, zLTt
52 real(r8),
dimension(NinnLoop) :: tau, zwork1, zeref
55 real(r8),
dimension(NinnLoop) :: zfact
64 master_thread :
IF (
master)
THEN
76 IF (innloop.eq.1)
THEN
77 zfact(innloop)=1.0_r8/
cg_qg(1,outloop)
79 zfact(innloop)=1.0_r8/
cg_beta(innloop,outloop)
90 IF (
obserr(iobs).NE.0.0_r8)
THEN
92 zt(innloop)=zt(innloop)+ &
94 &
zcglwk(iobs,innloop,outloop)* &
97 zt(innloop)=zt(innloop)+ &
99 &
zcglwk(iobs,innloop,outloop)* &
121 ztrit(i,i+1)=
cg_beta(i+1,outloop)
124 ztrit(i,i-1)=
cg_beta(i,outloop)
126 CALL sqlq (mloop, ztrit, tau, zwork1)
145 zgk=sqrt(zlt(mloop,mloop)*zlt(mloop,mloop)+ &
147 zck=zlt(mloop,mloop)/zgk
154 zt(j)=zt(j)-zt(i)*zltt(i,j)
156 zt(j)=zt(j)/zltt(j,j)
161 zt(mloop)=zck*zt(mloop)
175 zsum=zsum+zt(j)*zeref(j)
178 zt(j)=zt(j)-tau(i)*zsum*zeref(j)
194 zgam(ivec)=
cg_beta(ivec,outloop)/zbet
196 zu(ivec)=(zt(ivec)-
cg_beta(ivec,outloop)* &
201 zu(ivec)=zu(ivec)-zgam(ivec+1)*zu(ivec+1)
213 IF (
obserr(iobs).NE.0.0_r8)
THEN
217 & tlmodval_s(iobs,innloop,outloop)* &
218 & zu(innloop)*zfact(innloop)/ &
223 &
zcglwk(iobs,innloop,outloop)* &
242 master_thread :
IF (
master)
THEN
247 DO innloop=1,ninnloop
251 DO innloop=1,ninnloop
252 IF (innloop.eq.1)
THEN
253 zfact(innloop)=1.0_r8/
cg_qg(1,outloop)
255 zfact(innloop)=1.0_r8/
cg_beta(innloop,outloop)
264 DO innloop=1,ninnloop
266 IF (
obserr(iobs).NE.0.0_r8)
THEN
268 zt(innloop)=zt(innloop)+
obsscale(iobs)* &
269 &
zcglwk(iobs,innloop,outloop)*tlmodval(iobs)
271 zt(innloop)=zt(innloop)+
obsscale(iobs)* &
272 &
zcglwk(iobs,innloop,outloop)*tlmodval(iobs)/ &
293 ztrit(i,i+1)=
cg_beta(i+1,outloop)
296 ztrit(i,i-1)=
cg_beta(i,outloop)
298 CALL sqlq (ninnloop, ztrit, tau, zwork1)
317 zgk=sqrt(zlt(ninnloop,ninnloop)*zlt(ninnloop,ninnloop)+ &
319 zck=zlt(ninnloop,ninnloop)/zgk
326 zt(j)=zt(j)-zt(i)*zltt(i,j)
328 zt(j)=zt(j)/zltt(j,j)
333 zt(ninnloop)=zck*zt(ninnloop)
347 zsum=zsum+zt(j)*zeref(j)
350 zt(j)=zt(j)-tau(i)*zsum*zeref(j)
366 zgam(ivec)=
cg_beta(ivec,outloop)/zbet
368 zu(ivec)=(zt(ivec)-
cg_beta(ivec,outloop)* &
372 DO ivec=ninnloop-1,1,-1
373 zu(ivec)=zu(ivec)-zgam(ivec+1)*zu(ivec+1)
384 DO innloop=1,ninnloop
385 IF (
obserr(iobs).NE.0.0_r8)
THEN
389 & tlmodval_s(iobs,innloop,outloop)* &
390 & zu(innloop)*zfact(innloop)/ &
395 &
zcglwk(iobs,innloop,outloop)* &