m6
This commit is contained in:
96
tests/BondConnectionTest.cs
Normal file
96
tests/BondConnectionTest.cs
Normal file
@@ -0,0 +1,96 @@
|
||||
using System;
|
||||
using System.Linq;
|
||||
using Skeleton.Algebra.Extensions;
|
||||
using VirtualChemistry.Chemistry.Atoms.Implements;
|
||||
using VirtualChemistry.Chemistry.Atoms.Resolver;
|
||||
using VirtualChemistry.Chemistry.Bonds.Implements;
|
||||
using VirtualChemistry.Chemistry.Compounds.Implements;
|
||||
using VirtualChemistry.Chemistry.Containers;
|
||||
using VirtualChemistry.Chemistry.Mixtures.Implements;
|
||||
|
||||
namespace VirtualChemistryTest;
|
||||
|
||||
public static class BondConnectionTest
|
||||
{
|
||||
private class Container : IChemicalContainer
|
||||
{
|
||||
public Container(HeterogeneousMixture h) => Content = h;
|
||||
public double Volume() => 200;
|
||||
public HeterogeneousMixture Content { get; set; }
|
||||
public double EnvironmentPressure { get; set; }
|
||||
public double EnvironmentTemperature { get; set; }
|
||||
}
|
||||
|
||||
[Test]
|
||||
public static void Test()
|
||||
{
|
||||
HeterogeneousMixture h = new ();
|
||||
h.Container = new Container(h);
|
||||
HomogeneousMixture m = new();
|
||||
|
||||
QAtom q1 = new ();
|
||||
QAtom q2 = new();
|
||||
q1.C();
|
||||
q2.C();
|
||||
BaseBond b1 = q1.NextUnconnected("m");
|
||||
BaseBond b2 = q2.NextUnconnected("m");
|
||||
b1.Connect(b2);
|
||||
Compound c = q1.GrabCompound;
|
||||
c.Amount = 1;
|
||||
m.AddCompound(c);
|
||||
h.AddLayer(m);
|
||||
|
||||
Assert.IsTrue(h.Amount.IsEqualApprox(1));
|
||||
Assert.That(h.Layers.Count, Is.EqualTo(1));
|
||||
Assert.IsTrue(h.Layers.First().Amount.IsEqualApprox(1));
|
||||
Assert.IsTrue(h.Layers.First().Ratio.IsEqualApprox(1));
|
||||
Assert.IsTrue(c.Concentration.IsEqualApprox(1));
|
||||
Console.WriteLine(c.IsoRepresentation);
|
||||
QAtom q3 = new();
|
||||
QAtom q4 = new();
|
||||
q3.C();
|
||||
q4.C();
|
||||
q3.NextUnconnected("m").Connect(q4.NextUnconnected("m"));
|
||||
Compound cx = q3.GrabCompound;
|
||||
Console.WriteLine(cx.IsoRepresentation);
|
||||
Assert.IsTrue(c.IsometricTo(cx));
|
||||
Console.WriteLine(h.Dump());
|
||||
Console.WriteLine($"T: {m.Temperature} FD:{m.FreeDensity.Get} FV:{m.FreeVolume}");
|
||||
h.Container.EnvironmentTemperature = 1;
|
||||
for(int i = 0;i<10;i++)
|
||||
{
|
||||
m.HeatExchange();
|
||||
Console.WriteLine($"P: {m.Phase} T: {m.Temperature} FD:{m.FreeDensity.Get} FV:{m.FreeVolume}");
|
||||
//Console.WriteLine($"\t\t{c.CompressionBias.Get} {c.CompressionElasticity.Get} {c.CompressionStiffness}");
|
||||
Console.WriteLine($"\t{b1.AntiBondingEnergy} - {b1.Energy}");
|
||||
Console.WriteLine($"\t{b2.AntiBondingEnergy} - {b2.Energy}");
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public static void ReactionTest()
|
||||
{
|
||||
HeterogeneousMixture h = new ();
|
||||
h.Container = new Container(h);
|
||||
HomogeneousMixture m = new();
|
||||
h.AddLayer(m);
|
||||
BaseAtom a = AtomResolver.Resolve(1);
|
||||
Compound c = a.GrabCompound;
|
||||
a.Compound = c;
|
||||
c.Amount = 2;
|
||||
m.AddCompound(c);
|
||||
h.Container.EnvironmentTemperature = 9;
|
||||
for(int i = 1; i < 10; i++)
|
||||
h.OneStep();
|
||||
foreach (HomogeneousMixture mx in h.Layers)
|
||||
{
|
||||
Console.WriteLine(mx.Temperature);
|
||||
foreach (Compound cx in mx.Compounds)
|
||||
{
|
||||
var b = cx.Atoms.First().NextUnconnected("m");
|
||||
Console.WriteLine($"{cx.Expression} {cx.Amount} {b.BondingEnergy} {b.Energy}");
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user