C+ C NAME: C FixModel C PURPOSE: C To determine the change needed for the various lines of sight (LOS) C [g = m/ ==> dm = dg] C CATEGORY: C Data processing C CALLING SEQUENCE: subroutine FixModel(ID,NL,OBSV,MODV,PW,NBS,SIG,FIXR,SSIG,RAT) C INPUTS: C ID integer 1: Fix V model C 2: Fix G model C NL integer # data points C OBSV(NL) real Observed values C MODV(NL) real Model values C SIG real previous convergence criteria C PW real Power of G C NBS(NL) integer Bad source C OUTPUTS: C SIG real new convergence criteria C FIXR(NL) real Ratio of observed to model values ???? C SSIG(NL) real deviation from mean ???? C RAT real Ratio by which to multiply DEN1AU (G only) C CALLS: C Say C PROCEDURE: C MODIFICATION HISTORY: C NOV, 1995 B. Jackson (STEL,UCSD) C- real OBSV(NL) ! Observed G-levels real MODV(NL) ! Modeled G-levels real FIXR(NL) ! Ratio of observed to modeled G-values real SSIG(NL) ! G-source deviation from mean integer NBS(NL) ! Bad source value character cStr*100 character cID(2) /'V','G'/ SIGOLD = SIG ! Only used in Say statement SIG = 0 RAT = 0 ! Only useful for ID=1 (G level) NLL = 0 do I=1,NL OBS = OBSV(I) if(ID.eq.2) OBS = OBSV(I)*OBSV(I) ! Obs g-value must be squared R = OBS/MODV(I) FIXR(I) = R if (FIXR(I).gt.1000.) FIXR(I) = 1000.0 if (FIXR(I).lt.0.001) FIXR(I) = 0.001 if(NBS(I).ne.0) then NLL = NLL + 1 RAT = RAT+SQRT(1/R) R = R-1 SSIG(I) = R SIG = SIG+R*R end if end do RAT = (RAT/NLL)**(1./PW) SIG = sqrt(SIG/NLL) do I=1,NL if(NBS(I).ne.0) SSIG(I) = SSIG(I)/SIG end do write (cStr,'(A,F6.3,A,F7.3,A)') cID(ID)//' convergence = ',SIG, & ', from last =',abs(1-SIG/SIGOLD)*100,'%' if (ID .eq. 2) write (cStr(itrim(cStr)+1:),'(A,F7.3)') '#Multiply mean density by ',RAT call Say('FixModel','I','Info',cStr) return end