private static Kinetics[] getReactionKinetics(Reaction r) { Kinetics[] allKinetics; if (r.isForward()) { allKinetics = r.getKinetics(); } else if (r.isBackward()) { allKinetics = r.getFittedReverseKinetics(); } else { allKinetics = r.getKinetics(); } return allKinetics; }
public static String writeOutputString(Reaction r, TemplateReactionGenerator rtLibrary) { String listOfReactions = ""; Temperature stdtemp = new Temperature(298, "K"); double Hrxn = r.calculateHrxn(stdtemp); // If r Reaction is from Reaction Library add it to list of reaction append its kinetics and // return String source = r.getKineticsSource(0); if (source == null) { // If source is null I am assuming that its not a Reaction from Reaction Library or Seed // Mechanism source = "TemplateReaction:"; } StringTokenizer st = new StringTokenizer(source, ":"); String reaction_type = st.nextToken(); // Reactions from Reaction Libraries: if (reaction_type.equals("ReactionLibrary")) { // We will get the forward reaction if (r.isBackward()) { r = r.getReverseReaction(); Hrxn = -Hrxn; // Reversing the heat of reaction } Kinetics[] allKinetics = getReactionKinetics(r); for (int numKinetics = 0; numKinetics < allKinetics.length; ++numKinetics) { listOfReactions += r.toString() + "\t" + getFormattedKinetics(allKinetics[numKinetics], Hrxn); if (allKinetics.length != 1) listOfReactions += "\tDUP\n"; } return listOfReactions; } // Reactions NOT from Reaction Libraries are from Templates: if (r.isForward()) { Kinetics[] allKinetics = r.getKinetics(); for (int numKinetics = 0; numKinetics < allKinetics.length; ++numKinetics) { listOfReactions += r.toString() + "\t" + getFormattedKinetics(allKinetics[numKinetics], Hrxn); if (allKinetics.length != 1) listOfReactions += "\tDUP\n"; } } else if (r.isBackward()) { LinkedHashSet reverseReactions = new LinkedHashSet(); Iterator iter2 = r.getStructure().getProducts(); Species species1 = (Species) iter2.next(); Species species2 = species1; while (iter2.hasNext()) species2 = (Species) iter2.next(); String rxnFamilyName = ""; if (r instanceof TemplateReaction) { rxnFamilyName = ((TemplateReaction) r.getReverseReaction()).getReactionTemplate().getName(); } LinkedHashSet speciesHashSet = new LinkedHashSet(); speciesHashSet.add(species1); reverseReactions = rtLibrary.react(speciesHashSet, species2, rxnFamilyName); for (Iterator iter3 = reverseReactions.iterator(); iter3.hasNext(); ) { Reaction currentRxn = (Reaction) iter3.next(); if (currentRxn.getStructure() == r.getReverseReaction().getStructure()) { Kinetics[] allKinetics = currentRxn.getKinetics(); for (int numKinetics = 0; numKinetics < allKinetics.length; ++numKinetics) { listOfReactions += currentRxn.toString() + "\t" + getFormattedKinetics(allKinetics[numKinetics], -Hrxn); if (allKinetics.length != 1) listOfReactions += "\tDUP\n"; } } } } else { Kinetics[] allKinetics = r.getKinetics(); for (int numKinetics = 0; numKinetics < allKinetics.length; ++numKinetics) { listOfReactions += r.toString() + "\t" + getFormattedKinetics(allKinetics[numKinetics], Hrxn); if (allKinetics.length != 1) listOfReactions += "\tDUP\n"; } } return listOfReactions; }