Exemple #1
0
    //! Make the reaction using concentration A and B.
    public void MakeReaction(string reactionName, float concentrationA, float concentrationB)
    {
        ReactionClass reaction = ReactionsSaver.LoadReactions() [reactionName];

        float realConcentrationA;
        float realConcentrationB;

        float realConcentrationC;
        float realConcentrationD;

        realConcentrationB = concentrationB;         // limitant!!!

        realConcentrationA = realConcentrationB * reaction.stoichiometryR1;

        realConcentrationC = realConcentrationA * reaction.stoichiometryMainProduct;

        realConcentrationD = realConcentrationA * reaction.stoichiometrySubProduct;

        float phC = 0, phD = 0;
        float turbidityC = 0, turbidityD = 0;

        Dictionary <string, Compound> reagents = CompoundFactory.GetInstance().CupboardCollection;

        if (!reagents [reaction.mainProduct].IsSolid)
        {
            phC        = reagents [reaction.mainProduct].PH;
            turbidityC = reagents [reaction.mainProduct].Turbidity;
        }

        if (!reagents [reaction.subProduct].IsSolid)
        {
            phD        = reagents [reaction.mainProduct].PH;
            turbidityD = reagents [reaction.mainProduct].Turbidity;
        }

        polarizability = (reagents [reaction.mainProduct].Polarizability * realConcentrationC + reagents [reaction.subProduct].Polarizability * realConcentrationD) / (realConcentrationC + realConcentrationD);
        conductibility = (reagents [reaction.mainProduct].Conductibility * realConcentrationC + reagents [reaction.subProduct].Conductibility * realConcentrationD) / (realConcentrationC + realConcentrationD);
        solubility     = (reagents [reaction.mainProduct].Solubility * realConcentrationC + reagents [reaction.subProduct].Solubility * realConcentrationD) / (realConcentrationC + realConcentrationD);

        ph        = (phC * realConcentrationC + phD * realConcentrationD) / (realConcentrationC + realConcentrationD);
        turbidity = (turbidityC * realConcentrationC + turbidityD * realConcentrationD) / (realConcentrationC + realConcentrationD);

/*		float colorR = (reagents [reaction.cName].color.r * realConcentrationC + reagents [reaction.dName].color.r * realConcentrationD) / (realConcentrationC + realConcentrationD);
 *              float colorG = (reagents [reaction.cName].color.g * realConcentrationC + reagents [reaction.dName].color.g * realConcentrationD) / (realConcentrationC + realConcentrationD);
 *              float colorB = (reagents [reaction.cName].color.b * realConcentrationC + reagents [reaction.dName].color.b * realConcentrationD) / (realConcentrationC + realConcentrationD);
 *              float colorA = (reagents [reaction.cName].color.a * realConcentrationC + reagents [reaction.dName].color.a * realConcentrationD) / (realConcentrationC + realConcentrationD);
 *
 *              color = new Color (colorR, colorG, colorB, colorA);*/
    }
Exemple #2
0
    private ReactionTable()
    {
        table = new MultiDictionary <string, string, string> ();

        //Load the reagents from file into memory
        reactions = ReactionsSaver.LoadReactions();

        foreach (Compound c in CompoundFactory.GetInstance().CupboardCollection.Values)
        {
            foreach (ReactionClass re in reactions.Values)
            {
                if (re.reagent1 == c.Formula)
                {
                    table[re.reagent1, re.reagent2] = re.name;
                    table[re.reagent2, re.reagent1] = re.name;
                }
            }
        }
    }
    void OnGUI()
    {
        EditorGUILayout.BeginVertical();
        scrollPosition = EditorGUILayout.BeginScrollView(scrollPosition, GUILayout.Width(0), GUILayout.Height(0));

        EditorGUILayout.LabelField("Deletar Reacao:");

        Dictionary <string, ReactionClass> reactions = ReactionsSaver.LoadReactions();

        string[] names = new string[reactions.Count];

        int counter = 0;

        foreach (string name in reactions.Keys)
        {
            names[counter] = name;
            counter++;
        }

        indexOfReactions = EditorGUILayout.Popup(indexOfReactions, names);

        selectedReaction = names[indexOfReactions];

        if (selectedReaction != selectedReactionLastInteraction)
        {
            selected = false;
        }

        selectedReactionLastInteraction = selectedReaction;

        if (!selected)
        {
            if (GUILayout.Button("Checar"))
            {
                selected = true;
                reaction = reactions[names[indexOfReactions]];
            }
        }

        EditorGUILayout.Space();
        EditorGUILayout.Space();

        if (selected)
        {
            EditorGUILayout.LabelField("Nome: " + reaction.name);

            EditorGUILayout.Space();

            string bString = "";
            if (reaction.stoichiometryR2 != 0)
            {
                bString = " + " + reaction.stoichiometryR2.ToString() + " " + reaction.reagent2;
            }

            string dString = "";
            if (reaction.stoichiometrySubProduct != 0)
            {
                dString = " + " + reaction.stoichiometrySubProduct.ToString() + " " + reaction.subProduct;
            }

            EditorGUILayout.LabelField(reaction.stoichiometryR1.ToString() + " " + reaction.reagent1 + bString + " = " + reaction.stoichiometryMainProduct.ToString() + " " + reaction.mainProduct + dString);

            EditorGUILayout.Space();

            if (!deleteSelected)
            {
                if (GUILayout.Button("DELETAR!"))
                {
                    deleteSelected = true;
                }
            }
            else
            {
                EditorGUILayout.LabelField("Deletar?");
                if (GUILayout.Button("Sim"))
                {
                    Dictionary <string, ReactionClass> allReactions = ReactionsSaver.LoadReactions();

                    allReactions.Remove(names[indexOfReactions]);
//					ReactionsSaver.SaveReactions(allReactions);

                    Debug.Log("Reaçao " + names[indexOfReactions] + " Removida com sucesso!");

                    this.Close();
                }
                if (GUILayout.Button("Nao"))
                {
                    this.Close();
                }
            }
        }

        EditorGUILayout.EndScrollView();
        EditorGUILayout.EndVertical();
    }