program ips2020fmax parameter (nV=27) character cFile*80, & cCED*3 /'CTD'/, & cCET*3 /'CTT'/, & cPEN*3 /'PTN'/, & cPER*3 /'PTR'/, & cCSD*3 /'CRD'/, & cCST*3 /'CDT'/, & cPSN*3 /'PWN'/, & cPSR*3 /'PWR'/, & cCMD*4 /'CM2D'/, & cCMT*4 /'CM2T'/, & cPMN*4 /'PM2N'/, & cPMR*4 /'PM2R'/, & cValCSD*2,cValCST*2,cValPSN*2,cValPSR*2, & cValCED*2,cValCET*2,cValPEN*2,cValPER*2, & cValCMD*5,cValCMT*5,cValPMN*5,cValPMR*5, & cIdent*24 /'compare2020_0?0?0?0?.idl'/, & cStr*75, & cStr1*30 real CCFDD (nV), & CCFDAA (nV), & CCFDBA (nV), & CCFVV (nV), & CCFVAA (nV), & CCFVBA (nV), & COMB (nV), & ARR5 (5) logical bOpenFile include 'dirspec.h' include 'openfile.h' WtCCFD = 2.0 WtCCFV = 2.0 WtSD = 2.0 WtSV = 2.0 dCSD = 1.0 dCST = 0.2 dPSN = 0.1 dPSR = 0.1 i = iGetSymbol(cCED,cValCED) i = iGetSymbol(cCET,cValCET) i = iGetSymbol(cPEN,cValPEN) i = iGetSymbol(cPER,cValPER) read (cValCED,'(I2)') iValCED read (cValCET,'(I2)') iValCET read (cValPEN,'(I2)') iValPEN read (cValPER,'(I2)') iValPER i = iGetSymbol(cCMD,cValCMD) i = iGetSymbol(cCMT,cValCMT) i = iGetSymbol(cPMN,cValPMN) i = iGetSymbol(cPMR,cValPMR) read (cValCMD,'(F5.2)') ValCMD read (cValCMT,'(F5.3)') ValCMT read (cValPMN,'(F5.3)') ValPMN read (cValPMR,'(F5.3)') ValPMR if(iValCED.ne.0) then CSD0 = ValCMD -dCSD ! 3? increments including "0" --> CSD=iValCED else CSD0 = ValCMD end if if(iValCET.ne.0) then CST0 = ValCMT -dCST ! 3? increments including "0" --> CST=iValCET else CST0 = ValCMT end if if(iValPEN.ne.0) then PSN0 = ValPMN -dPSN ! 3? increments including "0" --> PSN=iValPEN else PSN0 = ValPMN end if if(iValPER.ne.0) then PSR0 = ValPMR -dPSR ! 3? increments including "0" --> PSR=iValPER else PSR0 = ValPMR end if iValPSN = -1 iValPSR = 0 iValCST = 0 iValCSD = 0 iValS3R = 0 nVal = (iValCED+1)*(iValCET+1)*(iValPEN+1)*(iValPER+1) do ik=1,nVal if (iValPSN .eq. iValPEN) then iValPSN = 0 if (iValPSR .eq. iValPER) then iValPSR = 0 if (iValCST .eq. iValCET) then iValCST = 0 iValCSD = iValCSD+1 else iValCST = iValCST+1 end if else iValPSR = iValPSR+1 end if else iValPSN = iValPSN+1 end if CSD = CSD0+iValCSD*dCSD CST = CST0+iValCST*dCST PSN = PSN0+iValPSN*dPSN PSR = PSR0+iValPSR*dPSR print *, ' ' print *, 'iValCSD, iValCST, iValPSN, iValPSR', iValCSD, iValCST, iValPSN, iValPSR print *, 'CSD, CST, PSN, PSR', CSD, CST, PSN, PSR write (cIdent,'(A,I1,A,I1,A,I1,A,I1,A)') 'compare2020_0',iValCSD,'0',iValCST,'0',iValPSN,'0',iValPSR,'.idl' i = iFilePath(cEnvi//'temp/ips2020',0,' ',cIdent,cFile) i = OPN__TEXT+OPN__REOPEN+OPN__UNKNOWN if (bOpenFile(i,iU,cFile,iRec)) then call Str2Flt_Exp (.TRUE.) read(iU,'(A)') cStr read(iU,'(A,A)',iostat=ier) cSTR1,cStr if(ier.eq.0) then nVa=1 call Str2Flt (cStr,nVa,ARR5) CCFD = ARR5(1) read(iU,'(A)') cStr nVa=5 call Str2Flt (cStr,nVa,ARR5) CCFDA = ARR5(1) CCFDX0 = ARR5(2) CCFDB = ARR5(3) CCFDY0 = ARR5(4) read(iU,'(A)') cStr nVa=1 call Str2Flt (cStr,nVa,ARR5) CCFV = ARR5(1) read(iU,'(A)') cStr nVa=5 call Str2Flt (cStr,nVa,ARR5) CCFVA = ARR5(1) CCFVX0 = ARR5(2) CCFVB = ARR5(3) CCFVY0 = ARR5(4) end if CCFDD(ik) = CCFD CCFDAA(ik) = CCFDA CCFDBA(ik) = CCFDB CCFVV(ik) = CCFV CCFVAA(ik) = CCFVA CCFVBA(ik) = CCFVB if(ier.eq.0)then WttCCFD = WtCCFD*CCFD if(WttCCFD.lt.0) WttCCFD = 0. WttCCFV = WtCCFV*CCFD if(WttCCFV.lt.0) WttCCFV = 0. WttSD = abs((CCFDB+CCFDA)/(CCFDB-CCFDA)) if(WttSD.gt.WtSD) WttSD = WtSD WttSV = abs((CCFVB+CCFVA)/(CCFVB-CCFVA)) if(WttSV.gt.WtSV) WttSV = WtSV COMB(ik) = WttCCFD + WttCCFV + (WtSD-WttSD) + (WtSV-WttSV) else CCFD = 0. CCFDA = 0. CCFDB = 0. CCFV = 0. CCFVA = 0. CCFVB = 0. CCFDD(ik) = 0. CCFDAA(ik) = 0. CCFDBA(ik) = 0. CCFVV(ik) = 0. CCFVAA(ik) = 0. CCFVBA(ik) = 0. COMB(ik) = 0. end if C print *, ik, CCFD,CCFDA,CCFDX0,CCFDB,CCFDY0, CCFV,CCFVA,CCFVX0,CCFVB,CCFVY0, COMB(ik) print *, ik, CCFD,CCFDA,CCFDB,CCFV,CCFVA,CCFVB,WttCCFD,WttCCFV,(WtSD-WttSD),(WtSV-WttSV),COMB(ik) iU = iFreeLun(iU) end if end do COMBS = 0.0 iks = 0 iValPSN = -1 iValPSR = 0 iValCST = 0 iValCSD = 0 if(iValCED.ne.0) then iValCSDS = 1 else iValCSDS = 0 end if if(iValCET.ne.0) then iValCSTS = 1 else iValCSTS = 0 end if if(iValPEN.ne.0) then iValPSNS = 1 else iValPSNS = 0 end if if(iValPER.ne.0) then iValPSRS = 1 else iValPSRS = 0 end if do ik=1,nVal if (iValPSN .eq. iValPEN) then iValPSN = 0 if (iValPSR .eq. iValPER) then iValPSR = 0 if (iValCST .eq. iValCET) then iValCST = 0 iValCSD = iValCSD+1 else iValCST = iValCST+1 end if else iValPSR = iValPSR+1 end if else iValPSN = iValPSN+1 end if if(COMB(ik).gt.COMBS) then COMBS = COMB(ik) iks = ik iValCSDS = iValCSD iValCSTS = iValCST iValPSNS = iValPSN iValPSRS = iValPSR end if end do CSD = CSD0+iValCSDS*dCSD CST = CST0+iValCSTS*dCST PSN = PSN0+iValPSNS*dPSN PSR = PSR0+iValPSRS*dPSR if(iValCED.eq.0) iValCSDS = 1 if(iValCET.eq.0) iValCSTS = 1 if(iValPEN.eq.0) iValPSNS = 1 if(iValPER.eq.0) iValPSRS = 1 C print *, CSD0,dCSD,CST0,dCST,PSN0,dPSN,PSR0,dPSR write (*,'(A,F10.4,A,4I2)') 'Maximum COMB =',COMBS,' at',iValCSDS,iValCSTS,iValPSNS,iValPSRS write (*,'(A,F4.1,3(A,F4.2))') 'Maximum values are CSD = ',CSD,' CST = ',CST,' PSN = ',PSN,', PSR = ',PSR write (cValCMD,'(F5.2)') CSD write (cValCMT,'(F5.3)') CST write (cValPMN,'(F5.3)') PSN write (cValPMR,'(F5.3)') PSR i = iSetSymbol(cCMD,cValCMD,1) i = iSetSymbol(cCMT,cValCMT,1) i = iSetSymbol(cPMN,cValPMN,1) i = iSetSymbol(cPMR,cValPMR,1) write (cValCSD,'(I2.2)') iValCSDS write (cValCST,'(I2.2)') iValCSTS write (cValPSN,'(I2.2)') iValPSNS write (cValPSR,'(I2.2)') iValPSRS i = iSetSymbol(cCSD,cValCSD,1) i = iSetSymbol(cCST,cValCST,1) i = iSetSymbol(cPSN,cValPSN,1) i = iSetSymbol(cPSR,cValPSR,1) end