********> bugfix.15 Author: Bill Ross Date: 5/8/95 Programs: tleap, xleap Severity: serious Problem: dihedral terms get confused when using multiple parameter sets (e.g. frcmod parameters) Cause: improper criteria for terminating a search through the parmsets Fix: Make the following changes to these files in leap/src/leap/: ---------------------------------------------------------------------- *** OLD commands.c --- NEW commands.c *************** *** 1469,1474 BEGIN if ( !bCmdGoodArguments( sCmd, iArgCount, aaArgs, "ul s" ) ) { VP0(( "usage: saveOffParm \n" )); RETURN(NULL); --- 1469,1476 ----- BEGIN + VP0(("saveOffParm: command deactivated\n" )); + RETURN(NULL); if ( !bCmdGoodArguments( sCmd, iArgCount, aaArgs, "ul s" ) ) { VP0(( "usage: saveOffParm \n" )); RETURN(NULL); ---------------------------------------------------------------------- *** OLD parmSet.h --- NEW parmSet.h *************** *** 95,100 #define PARM_NOT_INDEX -4 #define PARM_FOUND_TERMS -5 #define PARM_NOT_FOUND -6 /* * The following routines are used to create/destroy/describe --- 95,102 ----- #define PARM_NOT_INDEX -4 #define PARM_FOUND_TERMS -5 #define PARM_NOT_FOUND -6 + #define PARM_FOUND_WILD -7 + #define PARM_FOUND_EXACT -8 /* * The following routines are used to create/destroy/describe ---------------------------------------------------------------------- *** OLD parmSet.c --- NEW parmSet.c *************** *** 420,426 *TODO: with wild cards. */ FUNC ! BOOL zbParmSetAddToTorsion( tTorsion, iIndex, tpPTorsion, bUseIndex ) TORSION tTorsion; int iIndex; TORSIONPARMt* tpPTorsion; --- 420,426 ----- *TODO: with wild cards. */ FUNC ! int zbParmSetAddToTorsion( tTorsion, iIndex, tpPTorsion, bUseIndex ) TORSION tTorsion; int iIndex; TORSIONPARMt* tpPTorsion; *************** *** 449,455 tmNew.iIndex = PARM_NOT_FOUND; tmNew.tpTorsion = *tpPTorsion; VarArrayAdd( tTorsion, &tmNew ); ! RETURN(TRUE); } /* --- 446,454 ----- tmNew.iIndex = PARM_NOT_FOUND; tmNew.tpTorsion = *tpPTorsion; VarArrayAdd( tTorsion, &tmNew ); ! if ( !strcmp( tmNew.tpTorsion.sType1, WILD_CARD_TYPE ) ) ! RETURN(PARM_FOUND_WILD); ! RETURN(PARM_FOUND_EXACT); } /* * if the previous torsion is general and this one is *************** *** 467,473 tmNew.iIndex = PARM_NOT_FOUND; tmNew.tpTorsion = *tpPTorsion; VarArrayAdd( tTorsion, &tmNew ); ! RETURN(TRUE); } /* First check if it is already in the TORSION */ /* VARARRAY */ --- 465,471 ----- tmNew.iIndex = PARM_NOT_FOUND; tmNew.tpTorsion = *tpPTorsion; VarArrayAdd( tTorsion, &tmNew ); ! RETURN(PARM_FOUND_EXACT); } /* First check if it is already in the TORSION */ /* VARARRAY */ *************** *** 476,482 itpTorsion.iN == tpPTorsion->iN ) { ! bMatch = TRUE; if ( tpPTorsion->iType == PROPER ) { /* If the Proper that we are supposed to be adding is */ --- 474,480 ----- itpTorsion.iN == tpPTorsion->iN ) { ! if ( tpPTorsion->iType == PROPER ) { /* If the Proper that we are supposed to be adding is */ *************** *** 488,494 else tmPCur->iIndex = PARM_NOT_FOUND; tmPCur->tpTorsion = *tpPTorsion; ! bAddedOne = TRUE; } } else { /* If the improper that we are adding is more specific */ --- 486,492 ----- else tmPCur->iIndex = PARM_NOT_FOUND; tmPCur->tpTorsion = *tpPTorsion; ! RETURN(PARM_FOUND_EXACT); } } else { /* If the improper that we are adding is more specific */ *************** *** 511,517 else tmPCur->iIndex = PARM_NOT_FOUND; tmPCur->tpTorsion = *tpPTorsion; ! bAddedOne = TRUE; } } } --- 509,515 ----- else tmPCur->iIndex = PARM_NOT_FOUND; tmPCur->tpTorsion = *tpPTorsion; ! RETURN(PARM_FOUND_EXACT); } } RETURN(PARM_NOT_FOUND); *************** *** 514,519 bAddedOne = TRUE; } } } } --- 512,518 ----- RETURN(PARM_FOUND_EXACT); } } + RETURN(PARM_NOT_FOUND); } } *************** *** 519,530 /* If no match was found then simply add the */ /* proper to the end of the TORSION */ ! if ( !bMatch ) { ! if ( bUseIndex ) ! tmNew.iIndex = iIndex; ! else ! tmNew.iIndex = PARM_NOT_FOUND; ! tmNew.tpTorsion = *tpPTorsion; /* Find the proper place to put the term */ --- 518,528 ----- /* If no match was found then simply add the */ /* proper to the end of the TORSION */ ! if ( bUseIndex ) ! tmNew.iIndex = iIndex; ! else ! tmNew.iIndex = PARM_NOT_FOUND; ! tmNew.tpTorsion = *tpPTorsion; /* Find the proper place to put the term */ *************** *** 528,534 /* Find the proper place to put the term */ ! for ( tmPCur = PVAI(tTorsion, TORSION_MATCHt, 0),i=0; itpTorsion.iN ) --- 526,532 ----- /* Find the proper place to put the term */ ! for ( tmPCur = PVAI(tTorsion, TORSION_MATCHt, 0),i=0; itpTorsion.iN ) *************** *** 533,541 i++, tmPCur++ ) { if ( tmNew.tpTorsion.iN < tmPCur->tpTorsion.iN ) break; - } - VarArrayInsertBefore( tTorsion, i, &tmNew ); - bAddedOne = TRUE; } RETURN(bAddedOne); --- 531,536 ----- i++, tmPCur++ ) { if ( tmNew.tpTorsion.iN < tmPCur->tpTorsion.iN ) break; } VarArrayInsertBefore( tTorsion, i, &tmNew ); if ( !strcmp( tmNew.tpTorsion.sType1, WILD_CARD_TYPE ) ) *************** *** 537,542 VarArrayInsertBefore( tTorsion, i, &tmNew ); bAddedOne = TRUE; } RETURN(bAddedOne); END --- 532,541 ----- if ( tmNew.tpTorsion.iN < tmPCur->tpTorsion.iN ) break; } + VarArrayInsertBefore( tTorsion, i, &tmNew ); + if ( !strcmp( tmNew.tpTorsion.sType1, WILD_CARD_TYPE ) ) + RETURN(PARM_FOUND_WILD); + RETURN(PARM_FOUND_EXACT); END } *************** *** 538,544 bAddedOne = TRUE; } - RETURN(bAddedOne); END } --- 537,542 ----- RETURN(PARM_FOUND_WILD); RETURN(PARM_FOUND_EXACT); END } *************** *** 557,563 * * The atom types must be in canonical order. * ! * Return TRUE if any terms were added. */ FUNC BOOL zbParmSetBuildProperTorsion( psParmSet, s1, s2, s3, s4, --- 555,561 ----- * * The atom types must be in canonical order. * ! * Return PARM_* status according to terms added. */ FUNC int zbParmSetBuildProperTorsion( psParmSet, s1, s2, s3, s4, *************** *** 560,566 * Return TRUE if any terms were added. */ FUNC ! BOOL zbParmSetBuildProperTorsion( psParmSet, s1, s2, s3, s4, tTorsion, bUseIndex ) PARMSET psParmSet; char* s1; --- 558,564 ----- * Return PARM_* status according to terms added. */ FUNC ! int zbParmSetBuildProperTorsion( psParmSet, s1, s2, s3, s4, tTorsion, bUseIndex ) PARMSET psParmSet; char* s1; *************** *** 572,578 { int i; TORSIONPARMt* tpPCur; - BOOL bAddedOne; int iMax; BEGIN --- 570,575 ----- { int i; TORSIONPARMt* tpPCur; int iMax; int iRet = PARM_NOT_FOUND; *************** *** 574,579 TORSIONPARMt* tpPCur; BOOL bAddedOne; int iMax; BEGIN --- 571,577 ----- int i; TORSIONPARMt* tpPCur; int iMax; + int iRet = PARM_NOT_FOUND; BEGIN *************** *** 577,583 BEGIN ! bAddedOne = FALSE; if ( iMax = iVarArrayElementCount( psParmSet->vaTorsions ) ) { tpPCur = PVAI( psParmSet->vaTorsions, TORSIONPARMt, 0 ); for ( i=0; ivaTorsions ) ) { tpPCur = PVAI( psParmSet->vaTorsions, TORSIONPARMt, 0 ); for ( i=0; iiType != PROPER ) continue; if ( zbParmSetMatchProper( tpPCur, s1, s2, s3, s4 ) ) { ! bAddedOne |= zbParmSetAddToTorsion( tTorsion, i, tpPCur, bUseIndex ); } --- 582,588 ----- if ( tpPCur->iType != PROPER ) continue; if ( zbParmSetMatchProper( tpPCur, s1, s2, s3, s4 ) ) { ! int kk = zbParmSetAddToTorsion( tTorsion, i, tpPCur, bUseIndex ); if ( iRet == PARM_NOT_FOUND || *************** *** 587,592 bAddedOne |= zbParmSetAddToTorsion( tTorsion, i, tpPCur, bUseIndex ); } } } --- 585,594 ----- int kk = zbParmSetAddToTorsion( tTorsion, i, tpPCur, bUseIndex ); + if ( iRet == PARM_NOT_FOUND || + ( iRet == PARM_FOUND_WILD && + kk == PARM_FOUND_EXACT ) ) + iRet = kk; } } } *************** *** 591,597 } } ! RETURN(bAddedOne); END } --- 593,599 ----- } } ! RETURN(iRet); END } *************** *** 719,727 if ( tpPCur->iType != IMPROPER ) continue; if ( zbParmSetMatchImproper( tpPCur, s1, s2, s3, s4 ) ) { ! bAddedOne |= ! zbParmSetAddToTorsion( tTorsion, i, tpPCur, ! bUseIndex ); } } } --- 721,730 ----- if ( tpPCur->iType != IMPROPER ) continue; if ( zbParmSetMatchImproper( tpPCur, s1, s2, s3, s4 ) ) { ! if ( zbParmSetAddToTorsion( tTorsion, i, tpPCur, ! bUseIndex ) ! != PARM_NOT_FOUND ) ! bAddedOne = TRUE; } } } *************** *** 1309,1315 PVAI(psLib->vaTorsions,TORSIONPARMt,0)->sOrder, iVarArrayElementSize(psLib->vaTorsions) ); } else { - VP0((" parmsetload: setting all orders to 0123\n")); for ( i=0; ivaTorsions); i++ ) { strcpy( PVAI(psLib->vaTorsions,TORSIONPARMt,i)->sOrder,"0123"); } --- 1312,1317 ----- PVAI(psLib->vaTorsions,TORSIONPARMt,0)->sOrder, iVarArrayElementSize(psLib->vaTorsions) ); } else { for ( i=0; ivaTorsions); i++ ) { strcpy( PVAI(psLib->vaTorsions,TORSIONPARMt,i)->sOrder,"0123"); } *************** *** 1968,1974 zParmSetOrderProper( s1, s2, s3, s4 ); ! if ( zbParmSetBuildProperTorsion( psLib, s1, s2, s3, s4, tTorsion, bUseIndex ) ) RETURN(PARM_FOUND_TERMS); --- 1970,1976 ----- zParmSetOrderProper( s1, s2, s3, s4 ); ! RETURN( zbParmSetBuildProperTorsion( psLib, s1, s2, s3, s4, tTorsion, bUseIndex ) ); *************** *** 1970,1978 if ( zbParmSetBuildProperTorsion( psLib, s1, s2, s3, s4, ! tTorsion, bUseIndex ) ) ! RETURN(PARM_FOUND_TERMS); ! RETURN(PARM_NOT_FOUND); END } --- 1972,1978 ----- RETURN( zbParmSetBuildProperTorsion( psLib, s1, s2, s3, s4, ! tTorsion, bUseIndex ) ); END } *************** *** 2179,2185 double dP0; char* sDesc; { - BOOL bAddedIt; TORSIONPARMt tpTorsion; BEGIN --- 2179,2184 ----- double dP0; char* sDesc; { TORSIONPARMt tpTorsion; BEGIN *************** *** 2200,2208 strcpy(tpTorsion.sDesc, sDesc); strcpy( tpTorsion.sOrder, "0123" ); ! bAddedIt = ! zbParmSetAddToTorsion( tTorsion, 0, &tpTorsion, FALSE ); ! RETURN(bAddedIt); END } --- 2199,2208 ----- strcpy(tpTorsion.sDesc, sDesc); strcpy( tpTorsion.sOrder, "0123" ); ! if (zbParmSetAddToTorsion( tTorsion, 0, &tpTorsion, FALSE ) ! != PARM_NOT_FOUND ) ! RETURN(TRUE); ! RETURN(FALSE); END } *************** *** 2229,2235 double dP0; char* sDesc; { - BOOL bAddedIt; TORSIONPARMt tpTorsion; orderStr sOrder; --- 2229,2234 ----- double dP0; char* sDesc; { TORSIONPARMt tpTorsion; orderStr sOrder; *************** *** 2251,2259 strcpy(tpTorsion.sDesc, sDesc); strcpy( tpTorsion.sOrder, sOrder ); ! bAddedIt = ! zbParmSetAddToTorsion( tTorsion, 0, &tpTorsion, FALSE ); ! RETURN(bAddedIt); END } --- 2250,2259 ----- strcpy(tpTorsion.sDesc, sDesc); strcpy( tpTorsion.sOrder, sOrder ); ! if (zbParmSetAddToTorsion( tTorsion, 0, &tpTorsion, FALSE ) ! != PARM_NOT_FOUND ) ! RETURN(TRUE); ! RETURN(FALSE); END } ---------------------------------------------------------------------- *** OLD unitio.c --- NEW unitio.c *************** *** 643,652 } } ! ! /* Don't even bother loading the parameters or */ ! /* the angles/torsions, LEaP never needs to use */ ! /* them */ /* Load the parameters if they exist */ --- 643,652 ----- } } ! /* ! * DELETED: uUnit->psParameters = psParmSetLoad( db ); ! * since saved params confuse the issue of precedence. ! */ bGotOne = TRUE; *************** *** 648,657 /* the angles/torsions, LEaP never needs to use */ /* them */ - - /* Load the parameters if they exist */ - uUnit->psParameters = psParmSetLoad( db ); - bGotOne = TRUE; DONE: --- 648,653 ----- * since saved params confuse the issue of precedence. */ bGotOne = TRUE; DONE: *************** *** 1025,1035 0, NULL, NULL, 0 ); } ! /* Try to save the parameters, if there are some then */ ! /* save the bond, angle and torsion tables */ ! ! if ( uUnit->psParameters != NULL ) ! ParmSetSave( uUnit->psParameters, db ); /* Save the bond information */ --- 1021,1031 ----- 0, NULL, NULL, 0 ); } ! /* ! * DELETED: if ( uUnit->psParameters != NULL ) ! * ParmSetSave( uUnit->psParameters, db ); ! * since saving these confuses the precedence of params ! */ /* Save the bond information */ *************** *** 1765,1771 BOOL bCalc14, bCalcPert14; STRING s1, s2, s3, s4, sDesc; BOOL bFailedGeneratingParameters; ! int iTParm, iTN; double dTK, dTP; STRING sT1, sT2, sT3, sT4, sTemp; int iaIndexes[4]; --- 1761,1767 ----- BOOL bCalc14, bCalcPert14; STRING s1, s2, s3, s4, sDesc; BOOL bFailedGeneratingParameters; ! int iTParm, iTN, iTmp, iTNPert = 0; double dTK, dTP; STRING sT1, sT2, sT3, sT4, sTemp; int iaIndexes[4]; *************** *** 1889,1895 sAtom1, sAtom2, sAtom3, sAtom4 ); } ! if ( iTN == PARM_FOUND_TERMS ) { MESSAGE(( "Found existing %s terms in UNIT PARMSET.\n", ( bProper ? "PROPER" : "IMPROPER" ) )); } --- 1886,1892 ----- sAtom1, sAtom2, sAtom3, sAtom4 ); } ! if ( iTN != PARM_NOT_FOUND ) { MESSAGE(( "Found existing %s terms in UNIT PARMSET.\n", ( bProper ? "PROPER" : "IMPROPER" ) )); } *************** *** 1896,1902 if ( bPerturbTorsion ) { tPertTorsion = tParmSetTORSIONCreate(); if ( bProper ) { ! iTN = iParmSetFindProperTerms( uUnit->psParameters, tPertTorsion, TRUE, sPert1, sPert2, sPert3, sPert4 ); --- 1893,1899 ----- if ( bPerturbTorsion ) { tPertTorsion = tParmSetTORSIONCreate(); if ( bProper ) { ! iTNPert = iParmSetFindProperTerms( uUnit->psParameters, tPertTorsion, TRUE, sPert1, sPert2, sPert3, sPert4 ); *************** *** 1901,1907 sPert1, sPert2, sPert3, sPert4 ); } else { ! iTN = iParmSetFindImproperTerms( uUnit->psParameters, tPertTorsion, TRUE, sPert1, sPert2, sPert3, sPert4 ); --- 1898,1904 ----- sPert1, sPert2, sPert3, sPert4 ); } else { ! iTNPert = iParmSetFindImproperTerms( uUnit->psParameters, tPertTorsion, TRUE, sPert1, sPert2, sPert3, sPert4 ); *************** *** 1906,1912 sPert1, sPert2, sPert3, sPert4 ); } ! if ( iTN == PARM_FOUND_TERMS ) { MESSAGE(( "Found existing %s terms in UNIT PARMSET.\n", ( bProper ? "PROPER" : "IMPROPER" ) )); } --- 1903,1909 ----- sPert1, sPert2, sPert3, sPert4 ); } ! if ( iTNPert != PARM_NOT_FOUND ) { MESSAGE(( "Found existing %s terms in UNIT PARMSET.\n", ( bProper ? "PROPER" : "IMPROPER" ) )); } *************** *** 1912,1921 } } ! /* Now search through the PARMLIB for all other */ ! /* torsion terms that might not already be in */ ! /* the UNITs PARMSET */ ! /* Merge them into tTorsion */ PARMLIB_LOOP_ALL( plLib, psTemp ) { if ( bProper ) { --- 1909,1920 ----- } } ! if ( iTN != PARM_FOUND_EXACT || ! (bPerturbTorsion && iTNPert != PARM_FOUND_EXACT ) ) { ! /* search through the PARMLIBs */ ! /* put 1st torsion into tTorsion since ! hopefully we're searching back from most ! recent parm loaded */ PARMLIB_LOOP_ALL( plLib, psTemp ) { if ( iTN != PARM_FOUND_EXACT ) { *************** *** 1917,1925 /* the UNITs PARMSET */ /* Merge them into tTorsion */ ! PARMLIB_LOOP_ALL( plLib, psTemp ) { ! if ( bProper ) { ! iParmSetFindProperTerms( psTemp, tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); --- 1916,1925 ----- hopefully we're searching back from most recent parm loaded */ ! PARMLIB_LOOP_ALL( plLib, psTemp ) { ! if ( iTN != PARM_FOUND_EXACT ) { ! if ( bProper ) { ! iTN = iParmSetFindProperTerms( psTemp, tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); *************** *** 1923,1930 tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); ! } else { ! iParmSetFindImproperTerms( psTemp, tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); --- 1923,1930 ----- tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); ! } else { ! iTN = iParmSetFindImproperTerms( psTemp, tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); *************** *** 1928,1937 tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); ! } ! if ( bPerturbTorsion ) { ! if ( bProper ) { ! iParmSetFindProperTerms( psTemp, tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); --- 1928,1938 ----- tTorsion, FALSE, sAtom1, sAtom2, sAtom3, sAtom4 ); ! } ! } ! if ( bPerturbTorsion && iTNPert != PARM_FOUND_EXACT ) { ! if ( bProper ) { ! iTNPert = iParmSetFindProperTerms( psTemp, tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); *************** *** 1935,1942 tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); ! } else { ! iParmSetFindImproperTerms( psTemp, tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); --- 1936,1943 ----- tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); ! } else { ! iTNPert = iParmSetFindImproperTerms( psTemp, tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); *************** *** 1940,1945 tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); } } } --- 1941,1954 ----- tPertTorsion, FALSE, sPert1, sPert2, sPert3, sPert4 ); + } + } + if ( iTN == PARM_FOUND_EXACT ) { + if (bPerturbTorsion) { + if ( iTNPert == PARM_FOUND_EXACT ) + break; + } else + break; } } } *************** *** 1943,1949 } } } - #ifdef DEBUG MESSAGE(( "%s %s-%s-%s-%s found %d terms\n", ( bProper ? "PROPER" : "IMPROPER" ), --- 1952,1957 ----- } } } #ifdef DEBUG MESSAGE(( "%s %s-%s-%s-%s found %d terms\n", ( bProper ? "PROPER" : "IMPROPER" ), *************** *** 1953,1959 ParmSetTORSIONTerm( tTorsion, i, &iTParm, sT1, sT2, sT3, sT4, ! &iTN, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", i, iTParm, sT1, sT2, sT3, sT4, iTN, dTK, dTP )); } --- 1961,1967 ----- ParmSetTORSIONTerm( tTorsion, i, &iTParm, sT1, sT2, sT3, sT4, ! &iTmp, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP )); } *************** *** 1955,1961 sT1, sT2, sT3, sT4, &iTN, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", ! i, iTParm, sT1, sT2, sT3, sT4, iTN, dTK, dTP )); } if ( bPerturbTorsion ) { MESSAGE(( "Pert%s %s-%s-%s-%s found %d terms\n", --- 1963,1969 ----- sT1, sT2, sT3, sT4, &iTmp, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", ! i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP )); } if ( bPerturbTorsion ) { MESSAGE(( "Pert%s %s-%s-%s-%s found %d terms\n", *************** *** 1966,1972 ParmSetTORSIONTerm( tPertTorsion, i, &iTParm, sT1, sT2, sT3, sT4, ! &iTN, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", i, iTParm, sT1, sT2, sT3, sT4, iTN, dTK, dTP )); } --- 1974,1980 ----- ParmSetTORSIONTerm( tPertTorsion, i, &iTParm, sT1, sT2, sT3, sT4, ! &iTmp, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP )); } *************** *** 1968,1974 sT1, sT2, sT3, sT4, &iTN, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", ! i, iTParm, sT1, sT2, sT3, sT4, iTN, dTK, dTP )); } } #endif --- 1976,1982 ----- sT1, sT2, sT3, sT4, &iTmp, &dTK, &dTP, sTemp ); MESSAGE(( "Term %3d %d %s-%s-%s-%s %d %lf %lf\n", ! i, iTParm, sT1, sT2, sT3, sT4, iTmp, dTK, dTP )); } } #endif ---------------------------------------------------------------------- Temporary workarounds: Routines affected: