private BatchProblemNoDiffusion CreateExampleOne() { //components var componentList = new List <Component>(); componentList.Add(new Component("A", "A")); componentList.Add(new Component("B", "B")); // define partial reactions var ListReaction1LHS = new List <ReactionElement>(); var ListReaction1RHS = new List <ReactionElement>(); ListReaction1LHS.Add(new ReactionElement(componentList[0], 1)); ListReaction1RHS.Add(new ReactionElement(componentList[1], 1)); var Reaction1 = new ElementaryReaction(ListReaction1LHS, ListReaction1RHS, 250000, 50000, 125000, 52000); //make globalreaction List <ElementaryReaction> reactionList = new List <ElementaryReaction> { Reaction1 }; var GlobalReaction = new GlobalReaction(reactionList); var returnproblem = new BatchProblemNoDiffusion(1000.0, 10, GlobalReaction); returnproblem.InitialConcentration = new Dictionary <Component, double>(new Component.EqualityComparer()); return(returnproblem); }
private static BatchProblemNoDiffusion CreateProblem() { var componentList = MakeComponents(); // define partial reactions //B + E -> P var ListReaction1LHS = new List <ReactionElement>(); var ListReaction1RHS = new List <ReactionElement>(); ListReaction1LHS.Add(new ReactionElement(componentList[1].Copy(), 1)); ListReaction1LHS.Add(new ReactionElement(componentList[4].Copy(), 1)); ListReaction1RHS.Add(new ReactionElement(componentList[5].Copy(), 1)); var Reaction1 = new ElementaryReaction(ListReaction1LHS, ListReaction1RHS, 250000, 60000, 62500, 76000); //B + A -> BA var ListReaction2LHS = new List <ReactionElement>(); var ListReaction2RHS = new List <ReactionElement>(); ListReaction2LHS.Add(new ReactionElement(componentList[1].Copy(), 1)); ListReaction2LHS.Add(new ReactionElement(componentList[0].Copy(), 1)); ListReaction2RHS.Add(new ReactionElement(componentList[6].Copy(), 1)); var Reaction2 = new ElementaryReaction(ListReaction2LHS, ListReaction2RHS, 250000, 50000, 125000, 22000); //BA + E => P + A var ListReaction3LHS = new List <ReactionElement>(); var ListReaction3RHS = new List <ReactionElement>(); ListReaction3LHS.Add(new ReactionElement(componentList[6].Copy(), 1)); ListReaction3LHS.Add(new ReactionElement(componentList[4].Copy(), 1)); ListReaction3RHS.Add(new ReactionElement(componentList[5].Copy(), 1)); ListReaction3RHS.Add(new ReactionElement(componentList[0].Copy(), 1)); var Reaction3 = new ElementaryReaction(ListReaction3LHS, ListReaction3RHS, 300000, 18000, 150000, 64000); //dummy reaction C + D => P var ListReaction4LHS = new List <ReactionElement>(); var ListReaction4RHS = new List <ReactionElement>(); ListReaction4LHS.Add(new ReactionElement(componentList[2].Copy(), 1)); ListReaction4LHS.Add(new ReactionElement(componentList[3].Copy(), 1)); ListReaction4RHS.Add(new ReactionElement(componentList[5].Copy(), 1)); var Reaction4 = new ElementaryReaction(ListReaction4LHS, ListReaction4RHS, 0, 1000000, 0, 1000000); //make globalreaction List <ElementaryReaction> reactionList = new List <ElementaryReaction> { Reaction1, Reaction2, Reaction3, Reaction4 }; var GlobalReaction = new GlobalReaction(reactionList); return(new BatchProblemNoDiffusion(1000.0, 10, GlobalReaction)); }
public Dictionary <Component, double> updateConcentrations(GlobalReaction globalReaction, double timestep, double temperature, Dictionary <Component, double> currentConcentration) { var returnConcentrationChange = new Dictionary <Component, double>(new Component.EqualityComparer()); foreach (var component in currentConcentration.Keys) { returnConcentrationChange.Add(component, currentConcentration[component]); } foreach (var partialReaction in globalReaction.PartialReactions) { var concentrationChange = _elementaryReactionCalculator.UpdateConcentration(partialReaction, currentConcentration, temperature, timestep); foreach (var component in concentrationChange.Keys) { returnConcentrationChange[component] = returnConcentrationChange[component] + concentrationChange[component]; } } return(returnConcentrationChange); }
public static BatchProblemNoDiffusion CreateExample() { var componentList = MakeComponents(); // define partial reactions var ListReaction1LHS = new List <ReactionElement>(); var ListReaction1RHS = new List <ReactionElement>(); ListReaction1LHS.Add(new ReactionElement(componentList[0], 1)); ListReaction1RHS.Add(new ReactionElement(componentList[1], 1)); var Reaction1 = new ElementaryReaction(ListReaction1LHS, ListReaction1RHS, 250000, 50000, 125000, 52000); //make globalreaction List <ElementaryReaction> reactionList = new List <ElementaryReaction> { Reaction1 }; var GlobalReaction = new GlobalReaction(reactionList); return(new BatchProblemNoDiffusion(1000.0, 10, GlobalReaction)); }
private BatchProblemNoDiffusion CreateExampleTwo() { //components var componentList = new List <Component>(); componentList.Add(new Component("A", "A")); componentList.Add(new Component("B", "B")); componentList.Add(new Component("C", "C")); // define partial reactions var ListReaction1LHS = new List <ReactionElement>(); var ListReaction1RHS = new List <ReactionElement>(); ListReaction1LHS.Add(new ReactionElement(componentList[0], 1)); ListReaction1RHS.Add(new ReactionElement(componentList[1], 1)); var Reaction1 = new ElementaryReaction(ListReaction1LHS, ListReaction1RHS, 250000, 40000, 125000, 42000); var ListReaction2LHS = new List <ReactionElement>(); var ListReaction2RHS = new List <ReactionElement>(); ListReaction2LHS.Add(new ReactionElement(componentList[1], 1)); ListReaction2RHS.Add(new ReactionElement(componentList[2], 1)); var Reaction2 = new ElementaryReaction(ListReaction2LHS, ListReaction2RHS, 220000, 51000, 0, 52000); //make globalreaction List <ElementaryReaction> reactionList = new List <ElementaryReaction> { Reaction1, Reaction2 }; var GlobalReaction = new GlobalReaction(reactionList); var returnproblem = new BatchProblemNoDiffusion(1000.0, 10, GlobalReaction); return(returnproblem); }
public BatchProblemNoDiffusion(GlobalReaction globalReaction) { GlobalReaction = globalReaction.Copy(); _globalReactionCalculator = new GlobalReactionCalculator(); }
public BatchProblemNoDiffusion(double totalTime, int resultTimestep, GlobalReaction globalReaction) { TotalTime = totalTime; GlobalReaction = globalReaction.Copy(); _globalReactionCalculator = new GlobalReactionCalculator(); }