Note for now much of the docs is LLM written. This was done to save time and focus on code development. The docs have been LOOSLEY reviewed. However, the code itself has been either fully written by hand or fully reviewed. Therefore, the docs should at the moment be seen as a loose resource rather than authoratiative (and this is on top of the general ability for docs to drift)
24 lines
4.7 KiB
XML
24 lines
4.7 KiB
XML
<?xml version='1.0' encoding='UTF-8' standalone='no'?>
|
|
<doxygen xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="compound.xsd" version="1.13.2" xml:lang="en-US">
|
|
<compounddef id="dir_a6addf8d2b502bb84d626acd01a49eda" kind="dir">
|
|
<compoundname>src/include/serif/backend/mfem/serialize</compoundname>
|
|
<innerfile refid="backend_2mfem_2serialize_2configuration_8hpp">configuration.hpp</innerfile>
|
|
<innerfile refid="serialize_2discretization_8hpp">discretization.hpp</innerfile>
|
|
<innerfile refid="backend_2mfem_2serialize_2options_8hpp">options.hpp</innerfile>
|
|
<innerfile refid="serialize_2resources_8hpp">resources.hpp</innerfile>
|
|
<innerfile refid="backend_2mfem_2serialize_2top_8hpp">top.hpp</innerfile>
|
|
<briefdescription>
|
|
</briefdescription>
|
|
<detaileddescription>
|
|
<para><computeroutput>save_discretization(discretization)</computeroutput> records the physical and logical reference meshes, finite-element collections and spaces, term support and reduced numbering, compactification coefficients, mapping prescription, and deformation prescription. The application's resource owner and computational caches are not persistent data.</para>
|
|
<para><computeroutput>restore_discretization<Original>(node)</computeroutput> returns an expected owning discretization. <computeroutput>Original</computeroutput> supplies its compile-time term, domain-schema and deformation types. The returned object has a new resource-owner type; this is why ordinary <computeroutput>decode<Original></computeroutput> cannot reconstruct an arbitrary application-owned discretization. Its bindings and reference spaces borrow only resources retained by that new owner.</para>
|
|
<para>For a complete <computeroutput>make_discretization(...)</computeroutput> configuration, include <computeroutput>configuration.hpp</computeroutput> and use <computeroutput>restore_configuration<OriginalConfiguration>(node)</computeroutput>. This restores the resolved physical equations, independent FE resources, normalization choices and preconditioner recipe together. The original model's authored callback is replaced by the saved resolved equations; executable callbacks cannot be recreated from data.</para>
|
|
<para>For an external mesh, call <computeroutput>save_discretization(discretization, {.embed_mesh = false})</computeroutput>. Supply a <computeroutput>MeshResolver</computeroutput> to restoration: it receives each requested content fingerprint and returns native MFEM mesh text. <computeroutput>mesh_text(mesh)</computeroutput> produces the canonical text expected by this resolver. The same content and reconstruction checks apply to embedded and external meshes. Paths are deliberately left to the application.</para>
|
|
<para>Mesh text uses the classic locale and <computeroutput>max_digits10</computeroutput>. Restoration disables MFEM's refinement marking and optional element-orientation repair, then requires the reconstructed native mesh text to match exactly. Space reconstruction also checks the native signed element numbering; typed bindings check domain support and reduced numbering. Existing geometry validation checks paired reference meshes and shared scalar/displacement companion collections.</para>
|
|
<para>The current native format supports finite conforming serial 3D meshes and fixed-order standard H1, L2 and RT spaces. Unsupported resource kinds remain explicit <computeroutput>unsupported</computeroutput> nodes in the archive. Exact restoration currently requires the same MFEM version, MFEM exception support and its <computeroutput>MFEM_ERROR_THROW</computeroutput> error policy, so malformed native input can be reported instead of terminating the application. The loader does not change the application's global MFEM error policy. Additional dependency versions and MFEM feature configuration are provenance, not reconstructed objects. MPI library information is queried only if MPI is already running.</para>
|
|
<para>Store physical <computeroutput>StellarState</computeroutput> coefficients alongside the matching numerical description. The caller supplies that pairing; a bare coefficient vector cannot identify its originating mesh. State loading validates the compiled coordinate schema, backend loading validates the mesh and FE representation, and Newton resumption additionally checks the rebuilt accepted residual metric. Element samples, residuals, Jacobians and preconditioners are recomputed from the loaded inputs. A loaded candidate still requires numerical qualification before it can be reported as a converged equilibrium. </para>
|
|
</detaileddescription>
|
|
<location file="src/include/serif/backend/mfem/serialize/"/>
|
|
</compounddef>
|
|
</doxygen>
|