private void startInteractions() { List <int> moleculeIDs = molecules.GetIDs(); if (moleculeIDs.Count != 2) { if (moleculeIDs.Count > 2) { console.ShowError("Can't monitor molecule interactions. Only two molecules can to be loaded"); } else { console.ShowError("Can't monitor molecule interactions. At least two molecules need to be loaded"); } return; } MoleculeRenderSettings molecule1Settings = molecules.Get(moleculeIDs[0]).RenderSettings; MoleculeRenderSettings molecule2Settings = molecules.Get(moleculeIDs[1]).RenderSettings; if (molecules.Get(moleculeIDs[0]).HasTrajectory || molecules.Get(moleculeIDs[1]).HasTrajectory) { MoleculeEvents.RaiseInteractionsMessage("Can't monitor interactions. Monitored molecules cannot have trajectories loaded.", true); return; } MonitoringEnabled = true; StartStopButtonText.text = "Stop Monitoring Interactions"; UserInterfaceEvents.RaiseStartMonitoringMoleculeInteractions(moleculeIDs[0], moleculeIDs[1], interactionSettings, molecule1Settings, molecule2Settings); ResetPositionsButton.interactable = true; }
public void StartMonitoringInteractions(int molecule1ID, int molecule2ID, MolecularInteractionSettings interactionSettings, MoleculeRenderSettings molecule1Settings, MoleculeRenderSettings molecule2Settings) { if (!molecules.ContainsKey(molecule1ID)) { MoleculeEvents.RaiseInteractionsMessage("Can't monitor interactions. Molecule " + molecule1ID + " not found", true); return; } if (!molecules.ContainsKey(molecule2ID)) { MoleculeEvents.RaiseInteractionsMessage("Can't monitor interactions. Molecule " + molecule2ID + " not found", true); return; } moleculeInterations.StartMonitoring(molecules[molecule1ID], molecules[molecule2ID], interactionSettings, molecule1Settings, molecule2Settings); }
// This method return whether default sigma and epsilson values are used in the interaction energy caluclations private void reportSigmaEpsilonValueDefaults(Molecule molecule1, Molecule molecule2) { foreach (Atom atom in molecule1.PrimaryStructure.Atoms()) { if (InteractionForces.GetAtomSigmaEpsilonNanometres(atom).IsDefault) { MoleculeEvents.RaiseInteractionsMessage("Sigma epsilon values for " + atom.Element + " atom not found. Using default values", true); return; } } foreach (Atom atom in molecule2.PrimaryStructure.Atoms()) { if (InteractionForces.GetAtomSigmaEpsilonNanometres(atom).IsDefault) { MoleculeEvents.RaiseInteractionsMessage("Sigma epsilon values for " + atom.Element + " atom not found. Using default values", true); return; } } }
public void StartMonitoring(Molecule molecule1, Molecule molecule2, MolecularInteractionSettings interactionSettings, MoleculeRenderSettings molecule1Settings, MoleculeRenderSettings molecule2Settings) { UnityEngine.Debug.Log("Start monitoring " + Time.time); if (molecule1 == null) { MoleculeEvents.RaiseInteractionsMessage("Can't monitor interactions. First molecule is null.", true); return; } if (molecule2 == null) { MoleculeEvents.RaiseInteractionsMessage("Can't monitor interactions. Second molecule is null.", true); return; } if (molecule1.PrimaryStructureTrajectory != null || molecule2.PrimaryStructureTrajectory != null) { MoleculeEvents.RaiseInteractionsMessage("Can't monitor interactions. Monitored molecules cannot have trajectories loaded.", true); return; } this.Molecule1 = molecule1; this.Molecule2 = molecule2; this.interactionSettings = interactionSettings; SetMolecule1RenderSettings(molecule1Settings); SetMolecule2RenderSettings(molecule2Settings); interactionsRenderer.Molecule1 = molecule1; interactionsRenderer.Molecule2 = molecule2; reportSigmaEpsilonValueDefaults(molecule1, molecule2); Active = true; }