C+ C NAME: C FixfModeltd C PURPOSE: C To determine the change needed for the various lines of sight (LOS) C Faraday rotation observations C CATEGORY: C Data processing C CALLING SEQUENCE: C call FixfModeltd(KKK,NL,OBSFR,MODFR,NBS,FIX,SSIG,RAT) C INPUTS: C KKK integer 1 - Longitudinal map C 2 - Latitudinal map C 3 - Radial map C NL integer # data points C OBSFR(NL) real Observed values C MODFR(NL) real Model values C SIG real Previous convergence criteria C NBS(NL) integer Bad source C OUTPUTS: C SIG real New convergence criteria C FIX(NL) real Ratio of observed to model values C SSIG(NL) real Ratio deviation from mean C RAT real Ratio by which Faraday rotation is wrong C FUNCTIONS/SUBROUTINES: C PROCEDURE: C MODIFICATION HISTORY: C NOV, 1995, May 22,2004, B. Jackson (STEL,UCSD) C- subroutine FixfModeltd(KKK,NL,OBSFR,MODFR,NBS,SIG,FIX,SSIG,RAT) real OBSFR(NL), ! Observed G-levels & MODFR(NL), ! Modeled Faraday rotation values & FIX(NL), ! Modeled - Observed Faraday rotation values & SSIG(NL) ! Faraday rotation ratio deviation from mean integer NBS(NL) ! Bad source value character cStr*120, & cFR*2 /'FR'/ print *, 'Into fixfmodeltd' 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 = OBSFR(I) AMODL = MODFR(I) R = OBS/AMODL C R = R*1000. FIX(I) = 1.0 ! Fix is the Observed to Modeled values if(NBS(I).ne.0) then FIX(I) = R if(FIX(I).gt.10.0) FIX(I) = 10.0 if(FIX(I).lt.0.1) FIX(I) = 0.1 NLL = NLL + 1 RAT = RAT + (1./R) R = R - 1. SSIG(I) = R SIG = SIG + R*R end if end do RAT = RAT/float(NLL) SIG = sqrt(SIG/float(NLL)) do I=1,NL if(NBS(I).ne.0) SSIG(I) = SSIG(I)/SIG end do if(kkk.eq.1) then write (cStr,'(A,F6.3,A,F7.3,A)') cFR//' Long. convergence = ',SIG, & ', from last =',abs(1-SIG/SIGOLD)*100,'%' end if if(kkk.eq.2) then write (cStr,'(A,F6.3,A,F7.3,A)') cFR//' Lat. convergence = ',SIG, & ', from last =',abs(1-SIG/SIGOLD)*100,'%' end if if(kkk.eq.3) then write (cStr,'(A,F6.3,A,F7.3,A)') cFR//' Radial convergence = ',SIG, & ', from last =',abs(1-SIG/SIGOLD)*100,'%' end if write (cStr(itrim(cStr)+1:),'(A,F7.3)') '#Summed model to observed Faraday rotation ratio ',RAT call Say('FixfModeltd','I','Info',cStr) return end