Repository navigation
Added
-
Young's modulus now comes with an error bar, and
deformstages can be
replicated.plots postfits every pull -- each direction, each replica -- on its
own and reports E as the mean of those fits with the standard error between them,
writing the individual fits toE-fits.csv. A single fit's own statistics do not
say how far a second pull would land; the scatter between pulls does. It warns when
that error exceeds 20% of E. Adeformstage takesreplicas: Nto run N pulls with
their own velocities, in<subdir>-r1...<subdir>-rN, andseedto make them
reproducible. -
fit_strainsets the strain window E is fitted over. The window used to be a
range of rows,[10, 200], which covers 0.1-2% strain only at the default rate and
energy-output interval, and silently covered something else whenever either changed
or the pull was shorter.plots postsays when a pull stops short of it.
Changed
-
deformnow defaults to a 40 ps pull, three replicas, and a fit over 0.1-3%
strain (was 1000 ps -- a pull to 100% strain -- one replica, and rows 10-200). The
defaults were measured on example 6's network, 15 pulls to 10% strain: E is flat to
3-4% and softens past it, a single pull scatters by 80% fitted to 2% but by 30% fitted
to 3%, and nine pulls give E to about 10% (2.67 +/- 0.19 GPa there). Tutorials 2, 4, 5
and 6 use them.plots poston a run from before replicas existed still finds its
singledeform-<d>directory. -
Young's modulus is fitted with a free intercept. The fit used to be forced
through zero stress at zero strain, which assumes the structure starts unstressed. A
glass equilibrated for tens of ps does not: example 6's started at +150-200 bar, which
through the origin adds that offset over the strain to E -- about +1 GPa over a 2%
window -- and another network's started at -180 bar, biasing it low. Moduli computed
by earlier versions are off by an amount that depends on each structure's residual
stress. The R^2 warning added earlier in this cycle is gone: a sound fit to a real
trace has R^2 near 0.45, and the scatter between pulls is the real test.
Changed
-
Example 6 now cures bisphenol-A dicyanate by real cyclotrimerization. Its one
monomer, BDC, carries two cyanate groups, and aring_cureblock closes three of them
at a time into a 1,3,5-triazine, the reaction that actually cures a cyanate ester.
Conversion is the cyanate-group conversion, counted directly, and an unreacted group
simply stays -O-C#N, so the example needs no postcure repair. Until now the example
used a stand-in model -- bisphenol A plus a pre-formed triazine, joined by aryl
ethers, with a repair stage dismantling incomplete rings afterward -- whose triazines
existed before cure began, so the way its network formed, and its gel point, were not
those of the chemistry. The tutorial is rewritten to match, with every number from a
reference build (234 rings, cyanate conversion 0.975, Tg 529 K heating and 520 K
cooling, fractional free volume 0.213), and thepostcure_repairpage now describes
the repair stage as the tool for reproducing builds made the old way. The tutorial
no longer quotes a Young's modulus: its deform stages reach 1% strain, which the
reference build showed is too little to resolve one. -
htpolynet now requires ycleptic 2.4.4 or later (was 2.4.1). From 2.4.3 on,
ycleptic checks a base config's shape when it loads, not only its vocabulary: an
attribute indented one level too deep, adefault:that contradicts its owntype:,
or a non-attribute in anattributes:list used to be ignored silently, so whatever it
declared simply did not exist. 2.4.4 extends that check to the top-level list.
htpolynet's own schema passes it clean.
Fixed
-
A postsim stage with an unusable
subdirfailed only when its turn came, after
every stage before it had run -- a 21-stage grid would spend its allocation on the
first stages and then die with a bare assertion.postsimnow checks every stage's
directory before running any and names all the bad ones. A subdir must be one name
inside a project directory (postsim/deform-x); deeper paths such as
postsim/grid-A/deform-xare not supported. -
htpolynet plots diagfailed on every ring-cure run with a bareIndexError. It
recognized onlyCURE's two progress lines, and a ring cure logs its own, so it parsed
nothing. It now reads both, and a log with neither raises an error that says so. Its
iteration axes were also off by one for every cure: the cure's start was plotted as
iteration 1. -
htpolynet plots postcrashed before computing Young's modulus on pandas 3
("Columns with duplicate values are not supported in stack"), losinge.pngand
E.csvafter Tg had been plotted. The deform curves are now averaged without stacking
same-named columns. -
A bond stored with its atoms in descending order could silently keep stale
parameters.Topology.reset_override_from_typeput the requested pair in canonical
order but compared it against the stored row as written, so it missed a bond stored as
(aj, ai); the postcure repair'srefresh_bond_paramsthen swallowed the failure at
debug level and the cap's C-N bond kept its aromatic parameters. The lookup now
compares canonical order on both sides, and a refresh failure is a warning. Found by
the first end-to-end test of the repair driver, which also lands here. -
A ring cure's setup log no longer quotes a meaningless bond count. "100% conversion
is N bonds" came fromCURE's pairwise count, which treated a three-reactant ring
closure as three independent pairwise reactions: 360 BADCy monomers reported 1080
bonds, where full conversion is 240 rings and 720 bonds. A ring cure now says its
conversion is counted in reactive groups and points at the "Ring cure begins" line.
In a configuration with both pairwise and ring-closing reactions, the countCURE
uses for its own target now leaves the ring-closing reaction out. -
Two documentation passages still described Berendsen coupling as current after 2.14.0
moved off it: the densification gate's warning now says the packagednpt.mdpuses
C-rescale (and what that means for densities from older builds), and the container
guide's list of GPU-update-compatible features names V-rescale and C-rescale.