/// <summary> /// Broombridge serializer /// </summary> /// <param name="filename">Broombridge filename to serialize</param> /// <returns>Serialized Broombridge</returns> public static void SerializeBroombridgev0_2(V0_2.Data data, string filename) { var stringBuilder = new StringBuilder(); var serializer = new Serializer(); stringBuilder.AppendLine(serializer.Serialize(data)); Console.WriteLine(stringBuilder); Console.WriteLine(""); }
/// <summary> /// Converts v0.1 Broombridge to v0.2. /// </summary> /// <param name="input">Source Broombridge in v0.1 format.</param> /// <returns>Converted Broombridge in v0.2 format.</returns> public static V0_2.Data Update(V0_1.Data input) { var output = new V0_2.Data() { Schema = input.Schema, Format = input.Format, Generator = input.Generator, Bibliography = input.Bibliography, ProblemDescriptions = new List <V0_2.ProblemDescription>() }; foreach (var integralSet in input.IntegralSets) { var problemDescription = new V0_2.ProblemDescription() { Metadata = integralSet.Metadata, BasisSet = integralSet.BasisSet, Geometry = integralSet.Geometry, CoulombRepulsion = integralSet.CoulombRepulsion, ScfEnergy = integralSet.ScfEnergy, ScfEnergyOffset = integralSet.ScfEnergyOffset, FciEnergy = integralSet.FciEnergy, NOrbitals = integralSet.NOrbitals, NElectrons = integralSet.NElectrons, EnergyOffset = integralSet.EnergyOffset, Hamiltonian = integralSet.Hamiltonian, InitialStates = new List <V0_2.State>() }; if (integralSet.SuggestedState != null) { foreach (var sourceInitialState in integralSet.SuggestedState) { var initialState = new V0_2.State() { Label = sourceInitialState.SuggestedStateData.Label, Energy = sourceInitialState.SuggestedStateData.Energy, Method = V0_2.UpdaterStrings.SparseMultiConfigurational, Superposition = sourceInitialState.SuggestedStateData.Superposition }; problemDescription.InitialStates.Add(initialState); } } output.ProblemDescriptions.Add(problemDescription); } return(output); }
/// <summary> /// Returns Broombridge deserialized into the current version data structure. /// Data structure is automatically updated to the current Broombridge version. /// </summary> /// <param name="filename">Broombridge file address.</param> /// <returns>Deserializer Broombridge data strauture.</returns> public static Data DeserializeBroombridge(string filename) { VersionNumber versionNumber = GetVersionNumber(filename); var output = new V0_2.Data(); if (versionNumber == VersionNumber.v0_1) { output = DataStructures.Update(Deserialize <V0_1.Data>(filename)); } else if (versionNumber == VersionNumber.v0_2) { output = Deserialize <V0_2.Data>(filename); } else { throw new System.InvalidOperationException("Unrecognized Broombridge version number."); } return(new Data(output)); }