/** * The keyword is generated from the reactants and products using {@link GenerateReactionKeywords} * * @param reaction The reaction parsed from the text * @return the generated keyword */ private String getKeyword(ChemkinReaction reaction) { ArrayList<String> reactantNames = createMoleculeArrayList(reaction.getReactants()); ArrayList<String> productNames = createMoleculeArrayList(reaction.getProducts()); String reactionEquation = keywordGenerator.getReactionName(reactantNames, productNames); String keyword = keywordGenerator.getReactionFullName(reactionEquation); return keyword; }
@Override protected void createObjects() throws IOException { ChemkinMechanism mechanism = parse(); MechanismMoleculesToDatabaseTransaction moltransaction = (MechanismMoleculesToDatabaseTransaction) getInputSource(moleculesS); moleculeNamesTable = moltransaction.getMoleculeMap(); ChemkinReactionList reactionList = mechanism.getReactionList(); ArrayList<DatabaseObject> chemkinReactionList = new ArrayList<DatabaseObject>(); ArrayList<DatabaseObject> coefficients = new ArrayList<DatabaseObject>(); ArrayList<DatabaseObject> photoList = new ArrayList<DatabaseObject>(); for (ChemkinReaction reaction : reactionList) { String rxnkeyword = getKeyword(reaction); ChemkinReactionData rxndata = create(rxnkeyword, reaction, coefficients); if (reaction.isHvLight()) { PhotoChemicalReaction photo = new PhotoChemicalReaction(keyword, rxnkeyword, reaction.isHvLightAsReactant()); photoList.add(photo); } chemkinReactionList.add(rxndata); } StorageAndRetrievalUtilities.storeDatabaseObjects(chemkinReactionList); StorageAndRetrievalUtilities.storeDatabaseObjects(coefficients); StorageAndRetrievalUtilities.storeDatabaseObjects(photoList); rxntransaction.setReactionCount(chemkinReactionList.size()); }
/** * From {@link ChemkinReaction} form the {@link ChemkinReactionData} This routine parses through * all the coefficient types using createCoeffs: forward, reverse, low, high troe, sri, plog The * third body is parsed using createThirdBody * * @param reaction that has been parsed from the text * @return The reaction data */ private ChemkinReactionData create( String rxnkeyword, ChemkinReaction reaction, ArrayList<DatabaseObject> coefficients) { System.out.println("ChemkinReactionData create: " + rxnkeyword); ArrayList<String> reactantNames = createMoleculeArrayList(reaction.getReactants()); ArrayList<String> productNames = createMoleculeArrayList(reaction.getProducts()); ArrayList<String> reactantReactionNames = new ArrayList<String>(); for (String name : reactantNames) { String rxnmolname = moleculeNamesTable.get(name); reactantReactionNames.add(rxnmolname); } ArrayList<String> productReactionNames = new ArrayList<String>(); for (String name : productNames) { String rxnmolname = moleculeNamesTable.get(name); productReactionNames.add(rxnmolname); } ChemkinCoefficientsData forwardCoefficients = null; if (reaction.getForwardCoefficients() != null) { forwardCoefficients = createCoeffs(keyword, rxnkeyword, reaction.getForwardCoefficients()); forward = true; coefficients.add(forwardCoefficients); } ChemkinCoefficientsData reverseCoefficients = null; if (reaction.getReverseCoefficients() != null) { reverseCoefficients = createCoeffs(keyword, rxnkeyword, reaction.getReverseCoefficients()); reverse = true; coefficients.add(reverseCoefficients); } ChemkinCoefficientsData lowCoefficients = null; if (reaction.getLowCoefficients() != null) { lowCoefficients = createCoeffs(keyword, rxnkeyword, reaction.getLowCoefficients()); lowCoefficients.setLow(true); low = true; coefficients.add(lowCoefficients); } ChemkinCoefficientsData highCoefficients = null; if (reaction.getHighCoefficients() != null) { highCoefficients = createCoeffs(keyword, rxnkeyword, reaction.getHighCoefficients()); highCoefficients.setHigh(true); high = true; coefficients.add(highCoefficients); } ChemkinCoefficientsData troeCoefficients = null; if (reaction.getTroeCoefficients() != null) { troeCoefficients = createCoeffs(keyword, rxnkeyword, reaction.getTroeCoefficients()); troeCoefficients.setTroe(true); troe = true; coefficients.add(troeCoefficients); } ChemkinCoefficientsData sriCoefficients = null; if (reaction.getSriCoefficients() != null) { sriCoefficients = createCoeffs(keyword, rxnkeyword, reaction.getSriCoefficients()); sriCoefficients.setSri(true); sri = true; coefficients.add(sriCoefficients); } // ArrayList<ChemkinCoefficientsData> plogCoefficients = null; if (reaction.getPlogCoefficients() != null) { plog = true; // plogCoefficients = new ArrayList<ChemkinCoefficientsData>(); for (ChemkinCoefficients plog : reaction.getPlogCoefficients()) { ChemkinCoefficientsData plogC = createCoeffs(keyword, rxnkeyword, plog); coefficients.add(plogC); // plogCoefficients.add(plogC); // plogC.setPlog(true); } } ChemkinReactionData data = new ChemkinReactionData( keyword, rxnkeyword, reactantReactionNames, productReactionNames, forward, reverse, low, high, troe, sri, plog); if (reaction.getThirdBodyMolecules() != null) { addThirdBody(reaction.getThirdBodyMolecules(), data); } return data; }