pyoomph 0.2.1__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyoomph-0.2.1 → pyoomph-0.2.2}/CHANGELOG.md +86 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/CMakeLists.txt +1 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/INSTALL.md +13 -4
- {pyoomph-0.2.1 → pyoomph-0.2.2}/PKG-INFO +2 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/generate_aiomfac_parameters.py +2 -2
- pyoomph-0.2.2/citools/patches/apply_ginac_patch.sh +128 -0
- pyoomph-0.2.2/citools/patches/ginac-binomial-real-imag-pow00.patch +55 -0
- pyoomph-0.2.2/citools/patches/ginac-inexact-whole-number-exponent.patch +78 -0
- pyoomph-0.2.2/citools/patches/ginac-to-polynomial-symbolic-exponent.patch +44 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/test_all_tutorial_scripts.py +49 -9
- {pyoomph-0.2.1 → pyoomph-0.2.2}/cmake/ThirdPartyGiNaC.cmake +46 -12
- {pyoomph-0.2.1 → pyoomph-0.2.2}/cmake/generate_stubs.py +115 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/__init__.py +77 -22
- pyoomph-0.2.2/pyoomph/_version.py +1 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/NSCH.py +70 -3
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/low_order_NSCH.py +17 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/stabilization.py +29 -31
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/stabilized_ns.py +32 -34
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/topological_changes.py +142 -11
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/tracers.py +62 -8
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/viscoelastic.py +20 -3
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/__init__.py +140 -12
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/cb.py +315 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/generic.py +3 -2
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/interpol.py +33 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/tensor_funcs.py +33 -6
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/units.py +26 -9
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/utils.py +41 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/problem.py +538 -94
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/UNIFAC/aiomfac.py +2 -2
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/activity.py +218 -5
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/activity_electrolyte.py +314 -19
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/default_materials.py +18 -1
- pyoomph-0.2.2/pyoomph/materials/diffusivity_estimates.py +722 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/generic.py +177 -14
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/axisymm_topology.py +248 -38
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/gmsh.py +106 -6
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/mesh.py +12 -2
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/meshdatacache.py +13 -8
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/remesher.py +5 -4
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/generic.py +264 -149
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/meshio.py +46 -2
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/generic.py +34 -3
- pyoomph-0.2.2/pyoomph/solvers/mumps.py +622 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/petsc.py +5 -12
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/spectra.py +4 -2
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/bifurcation_gui/controller.py +26 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/num_text_out.py +81 -5
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyproject.toml +48 -3
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/codegen.cpp +930 -259
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/codegen.hpp +85 -7
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements.cpp +11 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements.hpp +1 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_interface.cpp +27 -2
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/expressions.cpp +672 -86
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/expressions.hpp +180 -5
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/jitbridge.h +72 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh.cpp +245 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/meshtemplate.cpp +63 -4
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/meshtemplate.hpp +24 -5
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/expressions.cpp +208 -60
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/problem.cpp +6 -4
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/INFO_oomph-lib +18 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/binary_tree.cc +13 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/adapt_continuation_worker.py +30 -3
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/continue_run_worker.py +41 -20
- pyoomph-0.2.2/tests/gmsh_high_order_worker.py +94 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_dof_description_worker.py +6 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_dof_ordering_rowsplit_worker.py +6 -1
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_dof_ordering_worker.py +6 -1
- pyoomph-0.2.2/tests/mpi_line_mesh_worker.py +70 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_observables_worker.py +9 -0
- pyoomph-0.2.2/tests/remesh_tangent_worker.py +184 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_reservoir_closure.py +80 -3
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_topology.py +71 -5
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_azimuthal_codegen.py +123 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_bifurcation_gui.py +25 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_custom_callbacks.py +25 -0
- pyoomph-0.2.2/tests/test_delayed_lambda_expansion.py +178 -0
- pyoomph-0.2.2/tests/test_diffusivity_estimates.py +366 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_dimensional_piecewise.py +29 -4
- pyoomph-0.2.2/tests/test_gmsh_high_order_optimize.py +134 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_inverted_element_remesh.py +92 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_math_functions.py +35 -2
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mesh_point_locator.py +30 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_axisymm_reconnection.py +17 -10
- pyoomph-0.2.2/tests/test_mpi_line_mesh.py +127 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_observables.py +36 -0
- pyoomph-0.2.2/tests/test_multiret_hessian.py +549 -0
- pyoomph-0.2.2/tests/test_multiret_real_part.py +100 -0
- pyoomph-0.2.2/tests/test_mumps_solver.py +383 -0
- pyoomph-0.2.2/tests/test_solver_autoselection.py +213 -0
- pyoomph-0.2.2/tests/test_state_file_restart.py +787 -0
- pyoomph-0.2.2/tests/test_symbolic_relational.py +382 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_tensor_index_conventions.py +35 -2
- pyoomph-0.2.2/tests/test_text_output_headers.py +158 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_tracers.py +116 -0
- pyoomph-0.2.2/tests/test_unifac_analytic_c_jacobian.py +170 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_unit_strings.py +39 -1
- pyoomph-0.2.1/.devcontainer/Dockerfile +0 -33
- pyoomph-0.2.1/.github/workflows/debug_wheel_case.yml +0 -373
- pyoomph-0.2.1/.github/workflows/prebuild_petsc_slepc.yml +0 -211
- pyoomph-0.2.1/.github/workflows/prebuild_static_ginac_cln.yml +0 -131
- pyoomph-0.2.1/.github/workflows/test_jit_cache.yml +0 -141
- pyoomph-0.2.1/.github/workflows/test_mac_accelerate.yml +0 -124
- pyoomph-0.2.1/.github/workflows/test_wheel_suite.yml +0 -532
- pyoomph-0.2.1/.github/workflows/test_wheels_multiversion.yml +0 -167
- pyoomph-0.2.1/.github/workflows/tutorial_scripts.yml +0 -614
- pyoomph-0.2.1/.github/workflows/wheels.yml +0 -772
- pyoomph-0.2.1/.readthedocs.yaml +0 -34
- pyoomph-0.2.1/AGENTS.md +0 -623
- pyoomph-0.2.1/CLAUDE.md +0 -105
- pyoomph-0.2.1/MANIFEST.in +0 -3
- pyoomph-0.2.1/agents/advanced.md +0 -612
- pyoomph-0.2.1/agents/examples.md +0 -557
- pyoomph-0.2.1/agents/materials.md +0 -381
- pyoomph-0.2.1/agents/meshes.md +0 -144
- pyoomph-0.2.1/agents/output.md +0 -126
- pyoomph-0.2.1/agents/parallel.md +0 -139
- pyoomph-0.2.1/agents/physics.md +0 -197
- pyoomph-0.2.1/agents/units.md +0 -139
- pyoomph-0.2.1/bisect.sh +0 -18
- pyoomph-0.2.1/build_for_develop.sh +0 -48
- pyoomph-0.2.1/citools/patches/apply_ginac_patch.sh +0 -38
- pyoomph-0.2.1/clean.sh +0 -40
- pyoomph-0.2.1/dev_docs/README.md +0 -91
- pyoomph-0.2.1/dev_docs/adaptive_refinement.md +0 -931
- pyoomph-0.2.1/dev_docs/adaptive_resolve_recovery.md +0 -373
- pyoomph-0.2.1/dev_docs/aiomfac_electrolytes.md +0 -147
- pyoomph-0.2.1/dev_docs/arclength_inner_product.md +0 -134
- pyoomph-0.2.1/dev_docs/assembly_overhead.md +0 -405
- pyoomph-0.2.1/dev_docs/axisymmetric_topological_changes.md +0 -801
- pyoomph-0.2.1/dev_docs/bifurcation_loci.md +0 -613
- pyoomph-0.2.1/dev_docs/boundary_node_membership.md +0 -292
- pyoomph-0.2.1/dev_docs/branch_switching.md +0 -699
- pyoomph-0.2.1/dev_docs/code_generation.md +0 -1818
- pyoomph-0.2.1/dev_docs/coordinate_system_tensor_ops.md +0 -390
- pyoomph-0.2.1/dev_docs/critical_wavenumber_tracking.md +0 -199
- pyoomph-0.2.1/dev_docs/deflation.md +0 -315
- pyoomph-0.2.1/dev_docs/distributed_periodic_bc.md +0 -206
- pyoomph-0.2.1/dev_docs/distributed_remeshing.md +0 -610
- pyoomph-0.2.1/dev_docs/distributed_state_files.md +0 -440
- pyoomph-0.2.1/dev_docs/dof_ordering.md +0 -222
- pyoomph-0.2.1/dev_docs/electrohydrodynamics.md +0 -900
- pyoomph-0.2.1/dev_docs/examples/axisymm_reconnection_minimal.py +0 -139
- pyoomph-0.2.1/dev_docs/examples/ginac_csrc_inexact_negative_exponent.cpp +0 -125
- pyoomph-0.2.1/dev_docs/examples/gmsh_orientation_matrix.py +0 -188
- pyoomph-0.2.1/dev_docs/examples/initialisation_profile.py +0 -109
- pyoomph-0.2.1/dev_docs/examples/inverted_element_notch.py +0 -181
- pyoomph-0.2.1/dev_docs/examples/sessile_droplet_surfactants.py +0 -193
- pyoomph-0.2.1/dev_docs/examples/simple_ginac +0 -0
- pyoomph-0.2.1/dev_docs/examples/simple_ginac.cpp +0 -94
- pyoomph-0.2.1/dev_docs/floquet_multipliers.md +0 -632
- pyoomph-0.2.1/dev_docs/hopf_normal_form.md +0 -177
- pyoomph-0.2.1/dev_docs/initialisation_cost.md +0 -319
- pyoomph-0.2.1/dev_docs/interface_refinement_coupling.md +0 -1128
- pyoomph-0.2.1/dev_docs/internal_facet_fields.md +0 -496
- pyoomph-0.2.1/dev_docs/jacobian_block_flags.md +0 -243
- pyoomph-0.2.1/dev_docs/linear_solvers.md +0 -837
- pyoomph-0.2.1/dev_docs/macro_elements.md +0 -805
- pyoomph-0.2.1/dev_docs/mesh_construction.md +0 -617
- pyoomph-0.2.1/dev_docs/mesh_data_cache.md +0 -635
- pyoomph-0.2.1/dev_docs/mesh_point_locator.md +0 -786
- pyoomph-0.2.1/dev_docs/mpi_augmented_systems.md +0 -612
- pyoomph-0.2.1/dev_docs/mpi_eigenproblems.md +0 -552
- pyoomph-0.2.1/dev_docs/nonconvergence_diagnostics.md +0 -164
- pyoomph-0.2.1/dev_docs/open_items.md +0 -486
- pyoomph-0.2.1/dev_docs/openmp_assembly.md +0 -307
- pyoomph-0.2.1/dev_docs/precice_setup.md +0 -86
- pyoomph-0.2.1/dev_docs/quick_continuation.md +0 -112
- pyoomph-0.2.1/dev_docs/replicated_condensation_gather.md +0 -341
- pyoomph-0.2.1/dev_docs/replicated_mpi_correctness.md +0 -421
- pyoomph-0.2.1/dev_docs/salt_transport.md +0 -235
- pyoomph-0.2.1/dev_docs/scripts/scan_required_shapes.py +0 -247
- pyoomph-0.2.1/dev_docs/scripts/scan_required_shapes_reverse.py +0 -147
- pyoomph-0.2.1/dev_docs/spatial_error_estimators.md +0 -700
- pyoomph-0.2.1/dev_docs/stabilized_navier_stokes.md +0 -362
- pyoomph-0.2.1/dev_docs/stabilized_scalar_transport.md +0 -390
- pyoomph-0.2.1/dev_docs/static_condensation.md +0 -1157
- pyoomph-0.2.1/dev_docs/structural_assembly.md +0 -780
- pyoomph-0.2.1/dev_docs/surfactant_transport.md +0 -465
- pyoomph-0.2.1/dev_docs/tracers.md +0 -432
- pyoomph-0.2.1/dev_docs/viscoelastic_log_conformation.md +0 -796
- pyoomph-0.2.1/docs/Makefile +0 -20
- pyoomph-0.2.1/docs/make.bat +0 -35
- pyoomph-0.2.1/docs/requirements.txt +0 -9
- pyoomph-0.2.1/docs/source/_ext/vidtime.py +0 -123
- pyoomph-0.2.1/docs/source/_static/css/custom.css +0 -62
- pyoomph-0.2.1/docs/source/_static/favicon.ico +0 -0
- pyoomph-0.2.1/docs/source/_static/js/vidtime.js +0 -69
- pyoomph-0.2.1/docs/source/conf.py +0 -229
- pyoomph-0.2.1/docs/source/index.rst +0 -354
- pyoomph-0.2.1/docs/source/latex_tutorial.rst +0 -31
- pyoomph-0.2.1/docs/source/pyoomph._pyoomph_core.rst +0 -17
- pyoomph-0.2.1/docs/source/pyoomph.equations.ALE.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.NSCH.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.additional.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.advection_diffusion.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.cahn_hilliard.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.contact_angle.rst +0 -7
- pyoomph-0.2.1/docs/source/pyoomph.equations.darcy.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.electrohydrodynamics.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.electrostatics.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.generic.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.harmonic_oscillator.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.helmholtz.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.kuramoto_sivashinsky.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.low_order_NSCH.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.lubrication.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.multi_component.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.navier_stokes.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.ode.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.poisson.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.potential_flow.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.rst +0 -45
- pyoomph-0.2.1/docs/source/pyoomph.equations.salt_transport.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.solid.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.stabilization.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.stabilized_ns.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.stokes_stream_func.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.surfactants.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.topological_changes.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.tracers.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.equations.viscoelastic.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.cb.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.coordsys.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.generic.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.interpol.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.phys_consts.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.rst +0 -24
- pyoomph-0.2.1/docs/source/pyoomph.expressions.tensor_funcs.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.units.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.expressions.utils.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.generic.assembly.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.generic.ccompiler.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.generic.codegen.rst +0 -7
- pyoomph-0.2.1/docs/source/pyoomph.generic.mpi.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.generic.problem.rst +0 -8
- pyoomph-0.2.1/docs/source/pyoomph.generic.rst +0 -21
- pyoomph-0.2.1/docs/source/pyoomph.jitbridge.rst +0 -9
- pyoomph-0.2.1/docs/source/pyoomph.materials.UNIFAC.aiomfac.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.UNIFAC.aiomfac_electrolyte.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.UNIFAC.dortmund.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.UNIFAC.original.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.UNIFAC.rst +0 -20
- pyoomph-0.2.1/docs/source/pyoomph.materials.activity.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.activity_electrolyte.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.default_materials.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.generic.rst +0 -7
- pyoomph-0.2.1/docs/source/pyoomph.materials.ions.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.mass_transfer.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.materials.rst +0 -31
- pyoomph-0.2.1/docs/source/pyoomph.materials.surfactant_isotherms.rst +0 -7
- pyoomph-0.2.1/docs/source/pyoomph.meshes.curved_entities.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.droplet_meshes.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.gmsh.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.interpolator.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.mesh.rst +0 -7
- pyoomph-0.2.1/docs/source/pyoomph.meshes.meshdatacache.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.remesher.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.rst +0 -26
- pyoomph-0.2.1/docs/source/pyoomph.meshes.simplemeshes.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.tqmesh.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.meshes.zeta.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.output.generic.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.output.latex.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.output.meshio.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.output.plotting.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.output.plotting1d.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.output.rst +0 -22
- pyoomph-0.2.1/docs/source/pyoomph.output.states.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.rst +0 -38
- pyoomph-0.2.1/docs/source/pyoomph.solvers.generic.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.solvers.pardiso.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.solvers.precice_adapter.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.solvers.rst +0 -21
- pyoomph-0.2.1/docs/source/pyoomph.solvers.scipy.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.solvers.spectra.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.typings.rst +0 -9
- pyoomph-0.2.1/docs/source/pyoomph.utils.bifurcation_gui.actions.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.bifurcation_gui.controller.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.bifurcation_gui.model.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.bifurcation_gui.plotter.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.bifurcation_gui.rst +0 -21
- pyoomph-0.2.1/docs/source/pyoomph.utils.bifurcation_gui.tkapp.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.dropgeom.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.lyapunov.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.num_text_out.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.paramscan.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.periodic_driving_response.rst +0 -6
- pyoomph-0.2.1/docs/source/pyoomph.utils.rst +0 -24
- pyoomph-0.2.1/docs/source/pyoomph.utils.smallest_circle.rst +0 -6
- pyoomph-0.2.1/docs/source/refs.bib +0 -761
- pyoomph-0.2.1/docs/source/tutorial/advstab/azimuthal/rayleigh_benard_azimuthal_stability.py +0 -142
- pyoomph-0.2.1/docs/source/tutorial/advstab/azimuthal/rbconvect.rst +0 -89
- pyoomph-0.2.1/docs/source/tutorial/advstab/azimuthal/rising_bubble.py +0 -239
- pyoomph-0.2.1/docs/source/tutorial/advstab/azimuthal/rising_bubble.rst +0 -90
- pyoomph-0.2.1/docs/source/tutorial/advstab/azimuthal.rst +0 -38
- pyoomph-0.2.1/docs/source/tutorial/advstab/bifgui/example.rst +0 -109
- pyoomph-0.2.1/docs/source/tutorial/advstab/bifgui/keys.rst +0 -110
- pyoomph-0.2.1/docs/source/tutorial/advstab/bifgui/menus.rst +0 -267
- pyoomph-0.2.1/docs/source/tutorial/advstab/bifgui/tabs.rst +0 -208
- pyoomph-0.2.1/docs/source/tutorial/advstab/bifgui/thin_film_bifurcation_gui.py +0 -182
- pyoomph-0.2.1/docs/source/tutorial/advstab/bifgui.rst +0 -87
- pyoomph-0.2.1/docs/source/tutorial/advstab/cartesiannormal/rivulet.py +0 -111
- pyoomph-0.2.1/docs/source/tutorial/advstab/cartesiannormal/rivulet.rst +0 -79
- pyoomph-0.2.1/docs/source/tutorial/advstab/cartesiannormal/turing_dispersion.py +0 -86
- pyoomph-0.2.1/docs/source/tutorial/advstab/cartesiannormal/turing_transient.py +0 -64
- pyoomph-0.2.1/docs/source/tutorial/advstab/cartesiannormal/turingdispersion.rst +0 -60
- pyoomph-0.2.1/docs/source/tutorial/advstab/cartesiannormal.rst +0 -17
- pyoomph-0.2.1/docs/source/tutorial/advstab/deflation.rst +0 -12
- pyoomph-0.2.1/docs/source/tutorial/advstab/eigenbranch_continuation.py +0 -145
- pyoomph-0.2.1/docs/source/tutorial/advstab/eigenconti.rst +0 -50
- pyoomph-0.2.1/docs/source/tutorial/advstab/movmesh/dropdetach.rst +0 -83
- pyoomph-0.2.1/docs/source/tutorial/advstab/movmesh/hanging_droplet.py +0 -132
- pyoomph-0.2.1/docs/source/tutorial/advstab/movmesh.rst +0 -10
- pyoomph-0.2.1/docs/source/tutorial/advstab/response/dampedho.rst +0 -63
- pyoomph-0.2.1/docs/source/tutorial/advstab/response/drums.rst +0 -53
- pyoomph-0.2.1/docs/source/tutorial/advstab/response/linear_response_drum.py +0 -129
- pyoomph-0.2.1/docs/source/tutorial/advstab/response/linear_response_oscillator.py +0 -106
- pyoomph-0.2.1/docs/source/tutorial/advstab/response.rst +0 -11
- pyoomph-0.2.1/docs/source/tutorial/advstab.rst +0 -19
- pyoomph-0.2.1/docs/source/tutorial/ale/ALE_correction.py +0 -65
- pyoomph-0.2.1/docs/source/tutorial/ale/aledt.rst +0 -88
- pyoomph-0.2.1/docs/source/tutorial/ale/beads_on_string.py +0 -160
- pyoomph-0.2.1/docs/source/tutorial/ale/beadsonstring.rst +0 -99
- pyoomph-0.2.1/docs/source/tutorial/ale/free_surface.py +0 -87
- pyoomph-0.2.1/docs/source/tutorial/ale/freesurf.rst +0 -134
- pyoomph-0.2.1/docs/source/tutorial/ale/gmshfields.rst +0 -98
- pyoomph-0.2.1/docs/source/tutorial/ale/lagrange.rst +0 -8
- pyoomph-0.2.1/docs/source/tutorial/ale/laplace_smoothed_mesh.py +0 -65
- pyoomph-0.2.1/docs/source/tutorial/ale/laplsmooth.rst +0 -54
- pyoomph-0.2.1/docs/source/tutorial/ale/pinchoff.rst +0 -124
- pyoomph-0.2.1/docs/source/tutorial/ale/rayleigh_plateau.py +0 -173
- pyoomph-0.2.1/docs/source/tutorial/ale/rayleigh_plateau_pinchoff.py +0 -202
- pyoomph-0.2.1/docs/source/tutorial/ale/remesh.rst +0 -66
- pyoomph-0.2.1/docs/source/tutorial/ale/remeshing.py +0 -67
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/cantilever.gif +0 -0
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/cantilever.py +0 -93
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/cantilever.rst +0 -57
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/compressed_disc.py +0 -92
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/compressed_disc.rst +0 -53
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/solid_oscillations.gif +0 -0
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/solid_oscillations.py +0 -69
- pyoomph-0.2.1/docs/source/tutorial/ale/solid/solid_oscillations.rst +0 -38
- pyoomph-0.2.1/docs/source/tutorial/ale/solid.rst +0 -69
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/droplet_spread_3d.py +0 -76
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/droplet_spread_free_slip.py +0 -76
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/droplet_spread_hyperelastic_tangential_shift.py +0 -134
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/droplet_spread_marangoni_and_gravity.py +0 -139
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/droplet_spread_sliplength.py +0 -67
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/free.rst +0 -47
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/hyperelastic.rst +0 -51
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/maraandgrav.rst +0 -103
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/navier.rst +0 -45
- pyoomph-0.2.1/docs/source/tutorial/ale/spread/threedim.rst +0 -51
- pyoomph-0.2.1/docs/source/tutorial/ale/spread.rst +0 -19
- pyoomph-0.2.1/docs/source/tutorial/ale.rst +0 -25
- pyoomph-0.2.1/docs/source/tutorial/dg/advdiffu.rst +0 -154
- pyoomph-0.2.1/docs/source/tutorial/dg/convection_diffusion.py +0 -93
- pyoomph-0.2.1/docs/source/tutorial/dg/facetfields.rst +0 -153
- pyoomph-0.2.1/docs/source/tutorial/dg/hdg.rst +0 -113
- pyoomph-0.2.1/docs/source/tutorial/dg/hdg_poisson.py +0 -163
- pyoomph-0.2.1/docs/source/tutorial/dg/hybrid_poisson.py +0 -113
- pyoomph-0.2.1/docs/source/tutorial/dg/poisson_weak_dirichlet.py +0 -89
- pyoomph-0.2.1/docs/source/tutorial/dg/weakdirichlet.rst +0 -70
- pyoomph-0.2.1/docs/source/tutorial/dg.rst +0 -27
- pyoomph-0.2.1/docs/source/tutorial/installation/additional.rst +0 -18
- pyoomph-0.2.1/docs/source/tutorial/installation/cmakeoptions.rst +0 -96
- pyoomph-0.2.1/docs/source/tutorial/installation/cmdlineoptions.rst +0 -181
- pyoomph-0.2.1/docs/source/tutorial/installation/compile.rst +0 -15
- pyoomph-0.2.1/docs/source/tutorial/installation/envvars.rst +0 -88
- pyoomph-0.2.1/docs/source/tutorial/installation/petscslepc.rst +0 -110
- pyoomph-0.2.1/docs/source/tutorial/installation/problems.rst +0 -12
- pyoomph-0.2.1/docs/source/tutorial/installation/pypa.rst +0 -106
- pyoomph-0.2.1/docs/source/tutorial/installation/source/linux.rst +0 -61
- pyoomph-0.2.1/docs/source/tutorial/installation/source/mac.rst +0 -77
- pyoomph-0.2.1/docs/source/tutorial/installation/wsl.rst +0 -118
- pyoomph-0.2.1/docs/source/tutorial/installation.rst +0 -17
- pyoomph-0.2.1/docs/source/tutorial/math/coordsys.rst +0 -203
- pyoomph-0.2.1/docs/source/tutorial/math/diffops.rst +0 -66
- pyoomph-0.2.1/docs/source/tutorial/math/elementary.rst +0 -85
- pyoomph-0.2.1/docs/source/tutorial/math/keywords.rst +0 -70
- pyoomph-0.2.1/docs/source/tutorial/math.rst +0 -13
- pyoomph-0.2.1/docs/source/tutorial/mcflow/contact.rst +0 -95
- pyoomph-0.2.1/docs/source/tutorial/mcflow/freesurf/details.rst +0 -60
- pyoomph-0.2.1/docs/source/tutorial/mcflow/freesurf/evapmdl.rst +0 -30
- pyoomph-0.2.1/docs/source/tutorial/mcflow/freesurf.rst +0 -66
- pyoomph-0.2.1/docs/source/tutorial/mcflow/gcl.rst +0 -114
- pyoomph-0.2.1/docs/source/tutorial/mcflow/gcl_glycerol_water_capillary.py +0 -116
- pyoomph-0.2.1/docs/source/tutorial/mcflow/general.rst +0 -27
- pyoomph-0.2.1/docs/source/tutorial/mcflow/marainstab.rst +0 -82
- pyoomph-0.2.1/docs/source/tutorial/mcflow/marangoni_instability.py +0 -116
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/gas.rst +0 -40
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/gasmix.rst +0 -73
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/liquid.rst +0 -32
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/liquidmix.rst +0 -28
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/materials_gas_mixture.py +0 -126
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/materials_liquids.py +0 -113
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/materials_pure_gas.py +0 -99
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/ptdep.rst +0 -54
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/solids.rst +0 -6
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib/temperature_and_pressure_dependency.py +0 -69
- pyoomph-0.2.1/docs/source/tutorial/mcflow/matlib.rst +0 -17
- pyoomph-0.2.1/docs/source/tutorial/mcflow/rayleigh_taylor_instability.py +0 -78
- pyoomph-0.2.1/docs/source/tutorial/mcflow/rtinstab.rst +0 -63
- pyoomph-0.2.1/docs/source/tutorial/mcflow/salts/capillary.rst +0 -84
- pyoomph-0.2.1/docs/source/tutorial/mcflow/salts/define.rst +0 -85
- pyoomph-0.2.1/docs/source/tutorial/mcflow/salts/double_layer.rst +0 -95
- pyoomph-0.2.1/docs/source/tutorial/mcflow/salts/double_layer_relaxation.py +0 -164
- pyoomph-0.2.1/docs/source/tutorial/mcflow/salts/nacl_capillary_evaporation.py +0 -140
- pyoomph-0.2.1/docs/source/tutorial/mcflow/salts.rst +0 -14
- pyoomph-0.2.1/docs/source/tutorial/mcflow/surfact/define.rst +0 -48
- pyoomph-0.2.1/docs/source/tutorial/mcflow/surfact/insoluble.rst +0 -37
- pyoomph-0.2.1/docs/source/tutorial/mcflow/surfact/insoluble_surfactant_definition.py +0 -92
- pyoomph-0.2.1/docs/source/tutorial/mcflow/surfact/soluble.rst +0 -92
- pyoomph-0.2.1/docs/source/tutorial/mcflow/surfact/soluble_surfactants.py +0 -112
- pyoomph-0.2.1/docs/source/tutorial/mcflow/surfact.rst +0 -12
- pyoomph-0.2.1/docs/source/tutorial/mcflow/unifac.rst +0 -34
- pyoomph-0.2.1/docs/source/tutorial/mcflow.rst +0 -22
- pyoomph-0.2.1/docs/source/tutorial/miscsettings/glorder.rst +0 -13
- pyoomph-0.2.1/docs/source/tutorial/miscsettings.rst +0 -11
- pyoomph-0.2.1/docs/source/tutorial/multidom/conduction.rst +0 -96
- pyoomph-0.2.1/docs/source/tutorial/multidom/evap.rst +0 -118
- pyoomph-0.2.1/docs/source/tutorial/multidom/evaporating_water_droplet.py +0 -164
- pyoomph-0.2.1/docs/source/tutorial/multidom/falling_droplet.py +0 -185
- pyoomph-0.2.1/docs/source/tutorial/multidom/falling_droplet_with_surfactants.py +0 -61
- pyoomph-0.2.1/docs/source/tutorial/multidom/icefront.rst +0 -124
- pyoomph-0.2.1/docs/source/tutorial/multidom/melting.rst +0 -108
- pyoomph-0.2.1/docs/source/tutorial/multidom/melting_ice_convection.py +0 -138
- pyoomph-0.2.1/docs/source/tutorial/multidom/simple_fsi.py +0 -87
- pyoomph-0.2.1/docs/source/tutorial/multidom/simple_fsi.rst +0 -51
- pyoomph-0.2.1/docs/source/tutorial/multidom/stokeslaw.rst +0 -90
- pyoomph-0.2.1/docs/source/tutorial/multidom/temperature_conduction.py +0 -106
- pyoomph-0.2.1/docs/source/tutorial/multidom/temperature_conduction_propagation.py +0 -137
- pyoomph-0.2.1/docs/source/tutorial/multidom/two_layer_flow.py +0 -95
- pyoomph-0.2.1/docs/source/tutorial/multidom/two_layer_flow_single_domain.py +0 -110
- pyoomph-0.2.1/docs/source/tutorial/multidom/twofluids.rst +0 -130
- pyoomph-0.2.1/docs/source/tutorial/multidom.rst +0 -19
- pyoomph-0.2.1/docs/source/tutorial/parallel/mpi.rst +0 -205
- pyoomph-0.2.1/docs/source/tutorial/parallel/openmp.rst +0 -107
- pyoomph-0.2.1/docs/source/tutorial/parallel.rst +0 -28
- pyoomph-0.2.1/docs/source/tutorial/pde/adapt/cylinder.rst +0 -145
- pyoomph-0.2.1/docs/source/tutorial/pde/adapt/heated_cylinder.py +0 -262
- pyoomph-0.2.1/docs/source/tutorial/pde/adapt/moffatt.rst +0 -221
- pyoomph-0.2.1/docs/source/tutorial/pde/adapt/moffatt_eddies.py +0 -205
- pyoomph-0.2.1/docs/source/tutorial/pde/adapt.rst +0 -41
- pyoomph-0.2.1/docs/source/tutorial/pde/continue.rst +0 -16
- pyoomph-0.2.1/docs/source/tutorial/pde/convdiffu/convdiffu_SUPG.py +0 -89
- pyoomph-0.2.1/docs/source/tutorial/pde/convdiffu/convdiffu_simple.py +0 -92
- pyoomph-0.2.1/docs/source/tutorial/pde/convdiffu/naive.rst +0 -52
- pyoomph-0.2.1/docs/source/tutorial/pde/convdiffu/supg.rst +0 -91
- pyoomph-0.2.1/docs/source/tutorial/pde/convdiffu.rst +0 -30
- pyoomph-0.2.1/docs/source/tutorial/pde/lubric/coalesce.rst +0 -37
- pyoomph-0.2.1/docs/source/tutorial/pde/lubric/lubrication.py +0 -61
- pyoomph-0.2.1/docs/source/tutorial/pde/lubric/lubrication_coalescence.py +0 -62
- pyoomph-0.2.1/docs/source/tutorial/pde/lubric/lubrication_spreading.py +0 -57
- pyoomph-0.2.1/docs/source/tutorial/pde/lubric/relax.rst +0 -34
- pyoomph-0.2.1/docs/source/tutorial/pde/lubric/spread.rst +0 -32
- pyoomph-0.2.1/docs/source/tutorial/pde/lubric.rst +0 -62
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/marainstab.rst +0 -43
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/marangoni_instability.py +0 -77
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/navier_stokes.py +0 -78
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/navier_stokes_around_object.py +0 -163
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/rayleigh_taylor_instability.py +0 -67
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/rtinstab.rst +0 -34
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/transientstokes.rst +0 -75
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/viscoelastic.rst +0 -119
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/viscoelastic_cylinder.py +0 -161
- pyoomph-0.2.1/docs/source/tutorial/pde/navier/womersley.rst +0 -32
- pyoomph-0.2.1/docs/source/tutorial/pde/navier.rst +0 -47
- pyoomph-0.2.1/docs/source/tutorial/pde/patterns/biftrack.rst +0 -50
- pyoomph-0.2.1/docs/source/tutorial/pde/patterns/eigen.rst +0 -106
- pyoomph-0.2.1/docs/source/tutorial/pde/patterns/kse.rst +0 -80
- pyoomph-0.2.1/docs/source/tutorial/pde/patterns/kuramoto_sivanshinsky.py +0 -81
- pyoomph-0.2.1/docs/source/tutorial/pde/patterns/kuramoto_sivanshinsky_arclength_eigen.py +0 -94
- pyoomph-0.2.1/docs/source/tutorial/pde/patterns/kuramoto_sivanshinsky_bifurcation.py +0 -72
- pyoomph-0.2.1/docs/source/tutorial/pde/patterns.rst +0 -15
- pyoomph-0.2.1/docs/source/tutorial/pde/wave/doubleslit.rst +0 -62
- pyoomph-0.2.1/docs/source/tutorial/pde/wave/drums.rst +0 -45
- pyoomph-0.2.1/docs/source/tutorial/pde/wave/onedim.rst +0 -56
- pyoomph-0.2.1/docs/source/tutorial/pde/wave/wave_eq.py +0 -72
- pyoomph-0.2.1/docs/source/tutorial/pde/wave/wave_eq_doubleslit.py +0 -132
- pyoomph-0.2.1/docs/source/tutorial/pde/wave/wave_eq_drums.py +0 -79
- pyoomph-0.2.1/docs/source/tutorial/pde/wave.rst +0 -13
- pyoomph-0.2.1/docs/source/tutorial/pde.rst +0 -19
- pyoomph-0.2.1/docs/source/tutorial/philosophy/generate_structure_figure.py +0 -216
- pyoomph-0.2.1/docs/source/tutorial/philosophy/structure.svg +0 -7666
- pyoomph-0.2.1/docs/source/tutorial/philosophy.rst +0 -89
- pyoomph-0.2.1/docs/source/tutorial/plotting/droplet.rst +0 -86
- pyoomph-0.2.1/docs/source/tutorial/plotting/eigendynamics.py +0 -59
- pyoomph-0.2.1/docs/source/tutorial/plotting/eigendynamics.rst +0 -49
- pyoomph-0.2.1/docs/source/tutorial/plotting/eigenfuncs.rst +0 -43
- pyoomph-0.2.1/docs/source/tutorial/plotting/evaporating_water_droplet.py +0 -164
- pyoomph-0.2.1/docs/source/tutorial/plotting/kuramoto_sivanshinsky.py +0 -81
- pyoomph-0.2.1/docs/source/tutorial/plotting/kuramoto_sivanshinsky_arclength_eigen.py +0 -94
- pyoomph-0.2.1/docs/source/tutorial/plotting/kuramoto_sivanshinsky_bifurcation.py +0 -72
- pyoomph-0.2.1/docs/source/tutorial/plotting/one_dimensional.py +0 -137
- pyoomph-0.2.1/docs/source/tutorial/plotting/one_dimensional.rst +0 -99
- pyoomph-0.2.1/docs/source/tutorial/plotting/plotting_eigenmodes.py +0 -113
- pyoomph-0.2.1/docs/source/tutorial/plotting/plotting_evaporating_droplet.py +0 -96
- pyoomph-0.2.1/docs/source/tutorial/plotting/replotting.rst +0 -41
- pyoomph-0.2.1/docs/source/tutorial/plotting/rising_bubble.py +0 -239
- pyoomph-0.2.1/docs/source/tutorial/plotting/tracers.py +0 -114
- pyoomph-0.2.1/docs/source/tutorial/plotting/tracers.rst +0 -131
- pyoomph-0.2.1/docs/source/tutorial/plotting.rst +0 -17
- pyoomph-0.2.1/docs/source/tutorial/precice/coupled_heat.rst +0 -73
- pyoomph-0.2.1/docs/source/tutorial/precice/coupled_heat_circle.rst +0 -67
- pyoomph-0.2.1/docs/source/tutorial/precice/partitioned_heat_conduction.py +0 -137
- pyoomph-0.2.1/docs/source/tutorial/precice/partitioned_heat_conduction_circle.py +0 -136
- pyoomph-0.2.1/docs/source/tutorial/precice.rst +0 -18
- pyoomph-0.2.1/docs/source/tutorial/preface/cite.rst +0 -26
- pyoomph-0.2.1/docs/source/tutorial/preface/general.rst +0 -4
- pyoomph-0.2.1/docs/source/tutorial/preface/license.rst +0 -171
- pyoomph-0.2.1/docs/source/tutorial/preface/motivation.rst +0 -15
- pyoomph-0.2.1/docs/source/tutorial/preface/oomph_lib_comparison.rst +0 -306
- pyoomph-0.2.1/docs/source/tutorial/preface/whentouse.rst +0 -27
- pyoomph-0.2.1/docs/source/tutorial/preface.rst +0 -19
- pyoomph-0.2.1/docs/source/tutorial/references.rst +0 -6
- pyoomph-0.2.1/docs/source/tutorial/spatial/helmholtz.rst +0 -171
- pyoomph-0.2.1/docs/source/tutorial/spatial/helmholtz_pml.py +0 -167
- pyoomph-0.2.1/docs/source/tutorial/spatial/math/internals.rst +0 -19
- pyoomph-0.2.1/docs/source/tutorial/spatial/math/shape.rst +0 -111
- pyoomph-0.2.1/docs/source/tutorial/spatial/math.rst +0 -15
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/byhand.rst +0 -55
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/curvedline.rst +0 -106
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/gmsh.rst +0 -58
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/mesh_Lshape_by_hand.py +0 -89
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/mesh_fish_dimensional_curved.py +0 -114
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/mesh_gmsh_fish_mesh_modes.py +0 -101
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/mesh_gmsh_fish_with_holes.py +0 -115
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/mesh_helical_line.py +0 -79
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/resolution.rst +0 -55
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh/unitsandmacro.rst +0 -96
- pyoomph-0.2.1/docs/source/tutorial/spatial/mesh.rst +0 -18
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/adapt.rst +0 -40
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/cauchy.rst +0 -10
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/coordsys.rst +0 -37
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/neumann.rst +0 -43
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/onedimcoupled.rst +0 -41
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/onedimdbc.rst +0 -61
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson.py +0 -67
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_2d.py +0 -56
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_2d_adaptive.py +0 -53
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_axisymm_adaptive.py +0 -42
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_coupled.py +0 -50
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_neumann.py +0 -64
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_pure_neumann_nullspace.py +0 -85
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_robin_via_lagrange.py +0 -73
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/poisson_robin_via_neumann.py +0 -55
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/pureneumann.rst +0 -94
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/robin.rst +0 -77
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/twodim.rst +0 -61
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson/weakform.rst +0 -57
- pyoomph-0.2.1/docs/source/tutorial/spatial/poisson.rst +0 -23
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/cavity_forward_problem.py +0 -66
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/cavity_inverse_problem.py +0 -82
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/cr.rst +0 -67
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/cr_condensation.rst +0 -147
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/cr_static_condensation.py +0 -119
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/dimtraction.rst +0 -83
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/implement.rst +0 -56
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/inverse_problem.rst +0 -140
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/nonnewton.rst +0 -25
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/nonormalflow.rst +0 -71
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/puredirichlet.rst +0 -16
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/stokes.py +0 -88
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/stokes_dimensional.py +0 -100
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/stokes_flow_around_object.py +0 -141
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/stokes_no_normal_flow.py +0 -113
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/stokes_nonnewtonian.py +0 -59
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/stokes_pressure_fix.py +0 -53
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/stokeslaw.rst +0 -144
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes/weakform.rst +0 -25
- pyoomph-0.2.1/docs/source/tutorial/spatial/stokes.rst +0 -23
- pyoomph-0.2.1/docs/source/tutorial/spatial.rst +0 -16
- pyoomph-0.2.1/docs/source/tutorial/temporal/changeparams.rst +0 -89
- pyoomph-0.2.1/docs/source/tutorial/temporal/coupled.rst +0 -115
- pyoomph-0.2.1/docs/source/tutorial/temporal/coupled_oscillators_method_1.py +0 -66
- pyoomph-0.2.1/docs/source/tutorial/temporal/coupled_oscillators_method_2.py +0 -66
- pyoomph-0.2.1/docs/source/tutorial/temporal/coupled_oscillators_method_3.py +0 -76
- pyoomph-0.2.1/docs/source/tutorial/temporal/custom_harmonic_oscillator.py +0 -75
- pyoomph-0.2.1/docs/source/tutorial/temporal/custommath/custom_math_dimensional_tennis.py +0 -122
- pyoomph-0.2.1/docs/source/tutorial/temporal/custommath/custom_math_driven_oscillator.py +0 -75
- pyoomph-0.2.1/docs/source/tutorial/temporal/custommath/drivenho.rst +0 -44
- pyoomph-0.2.1/docs/source/tutorial/temporal/custommath/multiret.rst +0 -4
- pyoomph-0.2.1/docs/source/tutorial/temporal/custommath/tennis.rst +0 -111
- pyoomph-0.2.1/docs/source/tutorial/temporal/custommath.rst +0 -14
- pyoomph-0.2.1/docs/source/tutorial/temporal/dimensional_oscillator_with_units.py +0 -74
- pyoomph-0.2.1/docs/source/tutorial/temporal/lagrange.rst +0 -121
- pyoomph-0.2.1/docs/source/tutorial/temporal/nondimho.rst +0 -92
- pyoomph-0.2.1/docs/source/tutorial/temporal/nonlinho.rst +0 -59
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit/floquet.rst +0 -102
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit/hopf_switch.py +0 -95
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit/hopf_switch.rst +0 -50
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit/langford_floquet.py +0 -115
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit/langford_time_integration.py +0 -55
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit/manual_orbit.py +0 -100
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit/manual_orbit.rst +0 -50
- pyoomph-0.2.1/docs/source/tutorial/temporal/orbit.rst +0 -45
- pyoomph-0.2.1/docs/source/tutorial/temporal/ownho.rst +0 -62
- pyoomph-0.2.1/docs/source/tutorial/temporal/parallel_running.py +0 -49
- pyoomph-0.2.1/docs/source/tutorial/temporal/pendulum_generalized_coordinate.py +0 -63
- pyoomph-0.2.1/docs/source/tutorial/temporal/pendulum_lagrange_multiplier.py +0 -100
- pyoomph-0.2.1/docs/source/tutorial/temporal/predefined_harmonic_oscillator.py +0 -53
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/arclength.rst +0 -102
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/biftrack.rst +0 -103
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_branch_switching.py +0 -182
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_eigenvalues_transcritical.py +0 -46
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_fold_arclength.py +0 -49
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_fold_arclength_eigen.py +0 -59
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_fold_param_change.py +0 -66
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_fold_tracking.py +0 -48
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_hopf_tracking_lorenz.py +0 -91
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_pitchfork_arclength_eigen.py +0 -146
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_pitchfork_tracking.py +0 -48
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_stationary_transcritical.py +0 -51
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_transcritital_arclength_eigen.py +0 -75
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/bifurcation_transient_transcritical.py +0 -66
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/branchswitch.rst +0 -126
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/constraints.rst +0 -117
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/deflated_continuation.py +0 -65
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/deflated_solve.py +0 -55
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/deflation.rst +0 -75
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/eigenvals.rst +0 -22
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/globalparams.rst +0 -64
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/jumponbif.rst +0 -75
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/lorenz_lyapunov.py +0 -77
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/lyapunov.rst +0 -81
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/pendulum_gencoord_eigenvalues.py +0 -62
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/pendulum_lagrange_eigenvalues.py +0 -52
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability/stationary.rst +0 -30
- pyoomph-0.2.1/docs/source/tutorial/temporal/stability.rst +0 -22
- pyoomph-0.2.1/docs/source/tutorial/temporal/testfunc.rst +0 -29
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/adaptive_lorenz_attractor.py +0 -65
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/adaptivity.rst +0 -73
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/higherorder.rst +0 -7
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/implicit.rst +0 -60
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/midpoint.rst +0 -81
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/oscillator_TPZ_scheme.py +0 -76
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/oscillator_fully_implicit_schemes.py +0 -87
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/time_stepping_schemes.py +0 -76
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping/timescheme.rst +0 -94
- pyoomph-0.2.1/docs/source/tutorial/temporal/timestepping.rst +0 -19
- pyoomph-0.2.1/docs/source/tutorial/temporal/units.rst +0 -65
- pyoomph-0.2.1/docs/source/tutorial/temporal/van_der_pol_method_1.py +0 -61
- pyoomph-0.2.1/docs/source/tutorial/temporal/van_der_pol_method_2.py +0 -55
- pyoomph-0.2.1/docs/source/tutorial/temporal.rst +0 -27
- pyoomph-0.2.1/docs/source/tutorial/tutorial_bundle.py +0 -235
- pyoomph-0.2.1/docs/source/tutorial/vibecoding.rst +0 -45
- pyoomph-0.2.1/docs/source/tutorial.rst +0 -32
- pyoomph-0.2.1/pyoomph/_version.py +0 -1
- pyoomph-0.2.1/tests/test_state_file_restart.py +0 -376
- {pyoomph-0.2.1 → pyoomph-0.2.2}/.gitignore +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/COPYING +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/README.md +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/aiomfac_param_import.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/before_build_linux.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/build_petsc_slepc.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/build_static_ginac_cln.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/build_static_ginac_cln_msys2.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/build_static_libomp.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/check_accelerate_reuse.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/compile_win_wheels_msys2.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/download_and_build_static_ginac.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/nightly_develop.conf.example +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/nightly_develop.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/patches/ginac-deterministic-constant-hash.patch +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/patches/ginac-deterministic-hash-seed.patch +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/patches/patch_tqmesh.cmake +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/petsc_arch_diag.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/resolve_ginac_cln_versions.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/tutorial_report_to_summary.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/windows_add_tkinter.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/windows_stubgen_diag.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/citools/windows_tcc_diag.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/cmake/ThirdPartySpectra.cmake +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/cmake/ThirdPartyTQMesh.cmake +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/cmake/ginac_determinism_probe.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/cmake/stubgen_launcher.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/__main__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/_deprecation.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/ALE.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/additional.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/advection_diffusion.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/cahn_hilliard.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/contact_angle.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/darcy.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/electrohydrodynamics.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/electrostatics.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/generic.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/harmonic_oscillator.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/helmholtz.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/kuramoto_sivashinsky.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/lubrication.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/multi_component.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/navier_stokes.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/ode.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/poisson.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/potential_flow.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/salt_transport.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/solid.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/stokes_stream_func.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/equations/surfactants.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/coordsys.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/phys_consts.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/expressions/vtu_interpol.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/external_tools/basilisk/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/external_tools/basilisk/qcc_code_gen.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/adaptive_recovery.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/assembly.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/bifurcation_tools.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/ccompiler.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/codegen.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/dof_ordering.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/floquet.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/jit_cache.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/logging.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/generic/mpi.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/jitbridge/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/UNIFAC/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/UNIFAC/aiomfac_electrolyte.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/UNIFAC/dortmund.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/UNIFAC/original.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/csv_data/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/csv_data/surftens_water_12hexanediol.csv +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/csv_data/surftens_water_12hexanediol_pendant.csv +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/csv_data/surftens_water_12hexanediol_ring.csv +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/ions.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/mass_transfer.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/materials/surfactant_isotherms.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/curved_entities.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/droplet_meshes.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/interpolator.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/meshdatamerge.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/meshstate.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/ordering.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/simplemeshes.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/tqmesh.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/meshes/zeta.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/latex.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/plotting.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/plotting1d.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/plotting3d.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/output/states.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/paraview/pyoomph_eigen_extrusion_filter.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/py.typed +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/accelerate.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/pardiso.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/precice_adapter.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/solvers/scipy.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/typings/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/bifurcation_gui/__init__.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/bifurcation_gui/actions.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/bifurcation_gui/model.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/bifurcation_gui/panes.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/bifurcation_gui/plotter.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/bifurcation_gui/tkapp.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/dropgeom.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/halleys_method.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/jacobian_analysis.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/lyapunov.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/paramscan.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/periodic_driving_response.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/rectangular_polar_mapping.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/smallest_circle.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/pyoomph/utils/sympy.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/Makefile +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/bifurcation.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/bifurcation.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/ccompiler.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/ccompiler.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_0d1d.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_2d.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_3d.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_adapt.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_assembly.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_concrete.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_d2shape.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_dofs.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_geometry.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_hanging.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/elements_shapeinfo.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/exception.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/exception.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/ginac.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/hessian_tensor.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/hessian_tensor.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/kdtree.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/kdtree.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/lagr_error_estimator.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/lagr_error_estimator.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/logging.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/logging.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mac_accelerate.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mac_accelerate.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/macroelements.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/macroelements.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh1d.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh1d.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh2d.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh2d.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh3d.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/mesh3d.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/missing_masters.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/codegen.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/geom_objects.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/mesh.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/mesh_handle.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/module.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/nb_array_utils.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/patch_stubs.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/problem.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/solver.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/spectra/spectra.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/timestepper.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/tqmesh/tqmesh.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nanobind/vector.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nodes.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/nodes.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/oomph_lib.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/parallel_assembly.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/periodic_bspline.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/periodic_bspline.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/pointlocator.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/pointlocator.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/problem.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/pyginacstruct.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/refdomain.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/refdomain.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/refineable_telements.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/refineable_telements.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/refinement_coupling.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/refinement_coupling.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/refinement_pattern.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/INFO_delaunator +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/INFO_nanoflann +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/INFO_tqmesh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/delaunator.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/nanoflann.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/LICENCE +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/Makefile +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/cross_compile.sh +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/Qelement_face_coordinate_translation_schemes.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/Qelement_face_coordinate_translation_schemes.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/Qelements.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/Qelements.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/Telements.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/Telements.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/Vector.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/algebraic_elements.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/algebraic_elements.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/assembly_handler.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/assembly_handler.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/binary_tree.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/communicator.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/communicator.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/domain.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/domain.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/double_vector.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/double_vector.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/double_vector_with_halo.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/double_vector_with_halo.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/element_with_external_element.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/element_with_external_element.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/element_with_moving_nodes.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/element_with_moving_nodes.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/elements.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/elements.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/error_estimator.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/error_estimator.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/explicit_timesteppers.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/explicit_timesteppers.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/generalised_timesteppers.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/geom_objects.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/integral.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/integral.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/linear_algebra_distribution.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/linear_algebra_distribution.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/linear_solver.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/linear_solver.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/macro_element.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/macro_element.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/macro_element_node_update_element.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/macro_element_node_update_element.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/map_matrix.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/matrices.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/matrices.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/mesh.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/mesh.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/mesh_as_geometric_object.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/mesh_as_geometric_object.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/missing_masters.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/missing_masters.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/missing_masters.template.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/nodes.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/nodes.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/octree.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/octree.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/oomph_definitions.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/oomph_definitions.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/oomph_utilities.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/oomph_utilities.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/orthpoly.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/orthpoly.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/partitioning.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/partitioning.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/problem.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/problem.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/quadtree.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/quadtree.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_brick_element.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_brick_element.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_elements.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_elements.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_line_element.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_line_element.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_mesh.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_mesh.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_mesh.template.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_quad_element.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/refineable_quad_element.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/sample_point_container.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/sample_point_container.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/sample_point_parameters.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/sample_point_parameters.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/shape.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/sparse_vector.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/timesteppers.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/timesteppers.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/tree.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/tree.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/tree.template.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/unstructured_two_d_mesh_geometry_base.cc +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thirdparty/oomph-lib/include/unstructured_two_d_mesh_geometry_base.h +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thread_state.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/thread_state.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/timestepper.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/timestepper.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/tracers.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/tracers.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/wedges_and_pyramids.cpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/src/wedges_and_pyramids.hpp +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/README.md +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/arclength_inner_product_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/arclength_metric_menu_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/axisymm_physics_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/axisymm_reconnection_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/benchmarks/bench_assembly.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/benchmarks/bench_periodic_orbit_1d.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/boundary_interpolation_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/box_cases.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/box_cases_3d.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/box_mesh_3d.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/branch_switch_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/command_rollback_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/conftest.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/deflation_gui_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/deflation_tab_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/delete_branch_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/extremum_observable_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/floquet_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/gui_close_teardown_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/hopf_lyapunov_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/inverted_remesh_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/jit_compiler_probe.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_adaptive_recovery_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_arclength_smoothing_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_axisymm_reconnection_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_bifurcation_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_boundary_membership_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_branch_switch_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_condensation_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_curved_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_deflation_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_eigen_adapt_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_eigen_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_eigendynamics_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_error_estimator_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_facet_fields_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_global_meshdata_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_gmsh_write_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_missing_pymetis_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_newton_abort_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_openmp_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_orbit_output_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_periodic_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_remesh_agreement_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_remeshing_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_serial_solver_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_state_file_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_structural_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_tracer_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_undistributable_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/mpi_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/must_init_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/normal_mode_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/orbit_gui_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/orbit_tab_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/periodic_cases.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/petsc_options_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/secondary_hopf_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/secondary_real_bifurcation_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/shortcut_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/slab_mesh.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/stale_tangent_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/stripe_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/tag_output_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_activity_aiomfac.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_adaptive_2d_campaign.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_adaptive_3d_campaign.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_adaptive_interface_coupling.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_adaptive_resolve_recovery.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_adaptivity.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_coalescence_remesh.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_pinchoff_remesh.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_reconnection_detect.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_reconnection_tqmesh.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_reconnection_transfer.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_transferred_history.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_axisymm_twophase_remesh.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_azimuthal_mode_list.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_bifurcation_tracker_jacobians.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_blocksolve_refused.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_boundary_element_identification.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_boundary_error_estimator.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_boundary_interpolation_fixes.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_compilers.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_constrained_adaptivity.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_critical_wavenumber_tracker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_curved_boundaries.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_deflation.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_deprecated_coordsys_kwarg.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_desired_ndof.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_dirichlet_matrix_manipulation.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_dof_description_walk.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_dof_ordering.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_domain_name_patterns.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_droplet_coalescence.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_ehd.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_eigen_during_tracking.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_electrostatics.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_facet_adjacency.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_floquet_multipliers.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_generated_code_expressions.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_globally_convergent_newton.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_hopf_lyapunov.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_interface_mesh_stiffening.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_internal_facet_fields.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_jacobian_block_flags.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_linear_response.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_linear_solver_selfcheck.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_loaded_text_file.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mixed_3d.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mixed_mesh.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mixture_by_concentration.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_adaptive_recovery.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_adaptivity.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_adaptivity_3d.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_arclength_smoothing.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_bifurcation_tracking.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_boundary_membership.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_branch_switch.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_curved_boundaries.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_deflation.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_dof_description.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_dof_ordering.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_dof_ordering_rowsplit.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_eigen_adapt.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_eigendynamics.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_eigenvalues.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_error_estimator.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_facet_fields.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_floquet.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_global_meshdata.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_hopf_lyapunov.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_interface_coupling.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_newton_abort.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_openmp_assembly.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_orbit_output.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_periodic.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_rank_zero_failures.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_remeshing.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_row_layout.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_serial_linear_solvers.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_state_files.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_static_condensation.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_structural_assembly.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_tracers.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_mpi_undistributable.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_multiple_problems.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_newton_abort.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_normal_derivatives.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_normal_form_degenerate_a.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_normal_form_units.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_normal_mode_branch_switch.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_openmp_assembly.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_openmp_present.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_output_vector_tensor_grouping.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_petsc_options_hygiene.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_plotter1d_secondary_axis.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_pyramid_refinement.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_quadrature.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_rayleigh_plateau_pinchoff.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_remesh_inside_solve.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_remeshing_leaks.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_salt_transport.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_second_derivatives.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_segment_ordering.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_shared_equations.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_slepc_present.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_solid_momentum.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_solver_deflation_hook.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_solver_failure_recovery.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_spectra_eigensolver.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_spectra_present.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_stabilized_transport.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_state_file_header.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_state_file_relocation.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_state_file_template_class.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_static_condensation.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_stokes.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_structural_assembly.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_stubs_present.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_surface_charge_transport.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_surfactant_transport.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_symmetric_solver_switch.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_tensor_fields.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_tet_refinement.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_triangle_refinement.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_two_live_problems.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_vectorial_conditions.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_viscoelastic.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_viscoelastic_cylinder.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/test_wedge_refinement.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/tracked_state_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/transient_leave_worker.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/two_domain_cases.py +0 -0
- {pyoomph-0.2.1 → pyoomph-0.2.2}/tests/units_worker.py +0 -0
|
@@ -1,5 +1,91 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.2.2] - 2026-10-04
|
|
4
|
+
|
|
5
|
+
79 commits since 0.2.1. Three themes: symbolic code generation that no longer treats an expression
|
|
6
|
+
DAG as a tree, an analytic Hessian that reaches through multi-return callbacks, and MUMPS reachable
|
|
7
|
+
without PETSc. Plus a long tail of remesh, continuation and `--distribute` fixes.
|
|
8
|
+
|
|
9
|
+
### Added
|
|
10
|
+
|
|
11
|
+
- **MUMPS without PETSc**, via the separate `pyoomph_mumps` package: the linear solver `--mumps`
|
|
12
|
+
(serial or natively distributed) and the eigensolver `--mumps_eigen` (Spectra with MUMPS
|
|
13
|
+
factorising the shifted matrix, real and complex), so azimuthal and Floquet stability no longer
|
|
14
|
+
need a full PETSc+SLEPc stack.
|
|
15
|
+
- **Analytic Hessians through `CustomMultiReturnExpression`**, which brings the UNIFAC and AIOMFAC
|
|
16
|
+
activity coefficients, the log-conformation decompositions, `InvertMatrix` and the Cahn-Hilliard
|
|
17
|
+
potentials within reach of the eigenvalue, bifurcation, Floquet and orbit workflows.
|
|
18
|
+
- **The exact UNIFAC Jacobian is emitted into the generated C** instead of being finite-differenced
|
|
19
|
+
(`analytic_c_jacobian=False` restores the old body).
|
|
20
|
+
- **Liquid-mixture diffusivity estimation from the activity coefficients**,
|
|
21
|
+
`MixtureLiquidProperties.set_estimate_diffusivities()`.
|
|
22
|
+
- **Symbolic comparisons and branching**: `var("time") < 2*second` yields a held relational
|
|
23
|
+
expression, `conditional(cond, iftrue, iffalse)` compiles it to a C ternary, and comparisons
|
|
24
|
+
combine with `~`, `&`, `|` and `^`.
|
|
25
|
+
- **`is_zero(..., tensors=True)`** recognises a zero vector or matrix, which the plain test never did.
|
|
26
|
+
- **NSCH: a C1 clamp for density and viscosity**, plus an optional temporal error estimator; the old
|
|
27
|
+
branch-wise clamp made Newton two-cycle once the phase field overshot `|phi|>1`.
|
|
28
|
+
- **`--where` now also picks the state a `--runmode c` resumes from**, taking a `.dump` file, `i=N`,
|
|
29
|
+
`t=X` or a bool expression over `step` and `time`.
|
|
30
|
+
- **Tracer collections living on an interface are written to state files** (state format 0.1.6);
|
|
31
|
+
they were previously lost on `--runmode c`.
|
|
32
|
+
|
|
33
|
+
### Changed / Improved
|
|
34
|
+
|
|
35
|
+
- **Code generation treats the residual as the DAG it is**, memoising or converting to DAG walks the
|
|
36
|
+
residual mappers, `MakeResidualSteady`, the subexpression-to-struct mapper, the parameter
|
|
37
|
+
substitution of the `dResidual/dParameter` loop, the two collectors and the last preorder scans of
|
|
38
|
+
the emission path -- a UNIFAC mass-transfer residual under `azimuthal_stability=True` previously
|
|
39
|
+
never finished at all.
|
|
40
|
+
- **The unit split skips `collect_common_factors` above a term count**, which is where an
|
|
41
|
+
evaporating droplet's never-returning split spent all of its samples.
|
|
42
|
+
- **`write_code` reports where it spends its time**, per residual set, with mapper and memo counters.
|
|
43
|
+
- **GiNaC patches** for `real_part`/`imag_part` of an integer power, `pow(0,0)`, a real and
|
|
44
|
+
commutative `subexpression()` marker, number lookups in `ex`-keyed caches, and a unit under a
|
|
45
|
+
symbolic exponent; the patch step re-runs when the patch set changes.
|
|
46
|
+
- **A spline macro element is parametrised by arclength** rather than the raw spline parameter, so
|
|
47
|
+
refinement puts new nodes at the geometric midpoint of an edge after a remesh.
|
|
48
|
+
- **Units written into a data file no longer contain a space**, which made them unreadable to
|
|
49
|
+
anything but pyoomph's own reader.
|
|
50
|
+
- **"There is no domain X defined in this mesh" after a remesh now says what it means**: the mesher
|
|
51
|
+
was handed a geometry it could not fill.
|
|
52
|
+
- The documentation builds against the current Sphinx generation.
|
|
53
|
+
|
|
54
|
+
### Fixed
|
|
55
|
+
|
|
56
|
+
- **The arclength continuation tangent is carried correctly across a remesh or an adapt** -- five
|
|
57
|
+
defects that each left the arclength invariant satisfied while the tangent pointed elsewhere, so
|
|
58
|
+
nothing reported them.
|
|
59
|
+
- **Two defects in the viscoelastic equations on a moving mesh**, both invisible on the static,
|
|
60
|
+
dimensionless meshes the tests used.
|
|
61
|
+
- **Axisymmetric pinch-off and coalescence beside a wall survive their own surgery**, and the
|
|
62
|
+
degenerate branch of the zeta invertibility check is now pinned by tests.
|
|
63
|
+
- **Remeshing on an inverted element asks for a different mesh on each retry**, scaling
|
|
64
|
+
`default_resolution` so that the gmsh size fields move too.
|
|
65
|
+
- **Under `--distribute`**: a 1-D submesh survives a rank that gets none of it, an unowned interface
|
|
66
|
+
dof is skipped during interface generation, the nearest-node fallback searches the old mesh
|
|
67
|
+
globally, and fragment counting agrees across ranks.
|
|
68
|
+
- **State files**: tracer collections are restored when the file brings its own mesh, and a template
|
|
69
|
+
rebuilt from a stored `.msh` keeps its boundary corner sizes.
|
|
70
|
+
- **A resumed run leaves the output files an uninterrupted one would write**, rather than a time
|
|
71
|
+
column that runs forwards and then jumps back.
|
|
72
|
+
- **Two reference leaks**: a delayed expansion pinned both itself and its callable, and a mixture
|
|
73
|
+
stayed uncollectible once it had a multi-return activity model.
|
|
74
|
+
- `get_real_part()`/`get_imag_part()` split an argument that no longer contains a field.
|
|
75
|
+
- `numouts` produces at least one output.
|
|
76
|
+
- Docstring markup that rendered as artifacts on Read the Docs, NSCH's forward references under
|
|
77
|
+
Sphinx, the clone URL on the two source-install pages, and the macOS stubs.
|
|
78
|
+
|
|
79
|
+
### Packaging & CI
|
|
80
|
+
|
|
81
|
+
- **The source distribution ships the sources, not the whole checkout**: 0.2.1 was 9.6 MB, most of it
|
|
82
|
+
a `docs/` tree that `.gitignore` had already punched holes in.
|
|
83
|
+
- arm64 Macs are pointed at `pyoomph_mumps`, and the deprecated `x86_64` arch is dropped for the
|
|
84
|
+
current Command Line Tools.
|
|
85
|
+
- `Programming Language :: Python :: 3.14` is declared, which the cp312 Stable-ABI wheel already
|
|
86
|
+
covers and is smoke-tested on.
|
|
87
|
+
- Test helper scripts in `tests/` are importable, so `pytest *.py` does not collect them as tests.
|
|
88
|
+
|
|
3
89
|
## [0.2.1]
|
|
4
90
|
|
|
5
91
|
Released as urgent patch of 0.2.0.
|
|
@@ -451,6 +451,7 @@ if(PYOOMPH_GENERATE_STUBS)
|
|
|
451
451
|
COMMAND "${Python_EXECUTABLE}" "${CMAKE_SOURCE_DIR}/cmake/generate_stubs.py"
|
|
452
452
|
--module-dir "$<TARGET_FILE_DIR:_pyoomph_core>"
|
|
453
453
|
--module-name "_pyoomph_core"
|
|
454
|
+
--expect-file "$<TARGET_FILE:_pyoomph_core>"
|
|
454
455
|
--stage-dir "${PYOOMPH_STUB_STAGE_DIR}"
|
|
455
456
|
--patch-script "${CMAKE_SOURCE_DIR}/src/nanobind/patch_stubs.py"
|
|
456
457
|
--python "${Python_EXECUTABLE}"
|
|
@@ -28,14 +28,23 @@ If you encounter segmentation faults during solving, please try to downgrade you
|
|
|
28
28
|
|
|
29
29
|
## On Mac
|
|
30
30
|
|
|
31
|
-
The fast `MKL Pardiso` solver from `mkl` is not available on `arm64` Macs. Since the default solver on `arm64` Macs (`Accelerate`) is unable to tackle larger problems at reasonable times, you definitely either want to use `MKL Pardiso` with a workaround
|
|
32
|
-
|
|
31
|
+
The fast `MKL Pardiso` solver from `mkl` is not available on `arm64` Macs - Intel does not ship `mkl` for `arm64` at all. Since the default solver on `arm64` Macs (`Accelerate`) is unable to tackle larger problems at reasonable times, you definitely either want to use `MUMPS` or `MKL Pardiso` with a workaround.
|
|
32
|
+
|
|
33
|
+
The recommended way is `MUMPS`, which runs natively on `arm64`. There are two routes:
|
|
34
|
+
|
|
35
|
+
* the standalone [pyoomph_mumps](https://github.com/pyoomph/pyoomph_mumps) package, which binds `MUMPS` directly and needs no `PETSc`. It gives you the `mumps` linear solver (`--mumps`) and, via pyoomph's built-in `Spectra` eigensolver, the `mumps` eigensolver (`--mumps_eigen`), in real and complex arithmetic. Install it (a Fortran compiler is required, e.g. by `brew install gcc`) via
|
|
36
|
+
|
|
37
|
+
> git clone https://github.com/pyoomph/pyoomph_mumps.git ; cd pyoomph_mumps ; python3 -m pip install .
|
|
38
|
+
|
|
39
|
+
See [here](https://pyoomph.readthedocs.io/en/latest/tutorial/installation/mumps.html) for details and build options.
|
|
40
|
+
|
|
41
|
+
* `PETSc/MUMPS`, i.e. `MUMPS` through `PETSc`, which additionally gives you `PETSc` as linear solver and `SLEPc` as (also distributed) eigensolver, but is considerably more to install. See [here](https://pyoomph.readthedocs.io/en/latest/tutorial/installation/petscslepc.html) for details.
|
|
42
|
+
|
|
43
|
+
To use `MKL Pardiso` instead, install pyoomph in a `Rosetta 2 terminal`, see [here](https://www.courier.com/blog/tips-and-tricks-to-setup-your-apple-m1-for-development/) how to set it up (**note**: recent systems must be handled differently, see [here](https://developer.apple.com/forums/thread/718666)). Note that Apple's x86_64 support degrades with every system update, so this route gets harder over time (the newer Command Line Tools cannot compile x86_64 any more, see the [documentation](https://pyoomph.readthedocs.io/en/latest/tutorial/installation/source/mac.html)).
|
|
33
44
|
Also, please downgrade `mkl` by
|
|
34
45
|
|
|
35
46
|
> python3 -m pip install mkl==2021.4.0
|
|
36
47
|
|
|
37
|
-
The alternative, solving with `PETSc/MUMPS`, runs natively on `arm64`, but requires the installation of `PETSc/MUMPS`. See [here](https://pyoomph.readthedocs.io/en/latest/tutorial/installation/petscslepc.html) for details.
|
|
38
|
-
|
|
39
48
|
Make sure to have the `Xcode` developer tools, e.g. by installing them via
|
|
40
49
|
|
|
41
50
|
> xcode-select --install
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyoomph
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: pyoomph - a multi-physics finite element framework based on oomph-lib and GiNaC
|
|
5
5
|
Author-Email: Christian Diddens <c.diddens@utwente.nl>, Duarte Rocha <d.rocha@utwente.nl>, Maxim de Wildt <m.dewildt@utwente.nl>
|
|
6
6
|
License: GNU GENERAL PUBLIC LICENSE Version 3
|
|
@@ -861,6 +861,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
|
861
861
|
Classifier: Programming Language :: Python :: 3.11
|
|
862
862
|
Classifier: Programming Language :: Python :: 3.12
|
|
863
863
|
Classifier: Programming Language :: Python :: 3.13
|
|
864
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
864
865
|
Classifier: Topic :: Scientific/Engineering
|
|
865
866
|
Classifier: Topic :: Scientific/Engineering :: Mathematics
|
|
866
867
|
Classifier: Topic :: Scientific/Engineering :: Physics
|
|
@@ -189,7 +189,7 @@ def emit_short_range(p: AIOMFACParameters, keep_names: dict[int, str]) -> str:
|
|
|
189
189
|
|
|
190
190
|
##########################################################################################
|
|
191
191
|
# These parameters stem from the AIOMFAC activity model
|
|
192
|
-
#\t\
|
|
192
|
+
#\t\thttps://aiomfac.lab.mcgill.ca/
|
|
193
193
|
#
|
|
194
194
|
# For the source code and parameter tables (GPL v3), see
|
|
195
195
|
#\t\thttps://github.com/andizuend/AIOMFAC
|
|
@@ -207,7 +207,7 @@ from ..activity import UNIFACLikeActivityModel,ActivityModel
|
|
|
207
207
|
@ActivityModel.register_activity_model()
|
|
208
208
|
class AIOMFAC(UNIFACLikeActivityModel):
|
|
209
209
|
"""
|
|
210
|
-
AIOMFAC activity model (
|
|
210
|
+
AIOMFAC activity model (https://aiomfac.lab.mcgill.ca/), parameters taken from the AIOMFAC
|
|
211
211
|
source code (https://github.com/andizuend/AIOMFAC).
|
|
212
212
|
|
|
213
213
|
Cite the publications when using this activity model (https://aiomfac.lab.mcgill.ca/citation.html).
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
# Applies pyoomph's GiNaC patches to a GiNaC source tree (run with cwd = the
|
|
3
|
+
# extracted GiNaC source root, i.e. the directory containing ginac/).
|
|
4
|
+
#
|
|
5
|
+
# Idempotent by design: cmake/ThirdPartyGiNaC.cmake makes the ExternalProject
|
|
6
|
+
# patch step depend on this script and on every *.patch beside it, so touching
|
|
7
|
+
# any of them re-runs the step against a tree that is already (partly) patched.
|
|
8
|
+
# A plain `patch -p1 -i ...` fails loudly the second time ("Reversed (or
|
|
9
|
+
# previously applied) patch detected!"), so each patch has to be recognised as
|
|
10
|
+
# already applied and skipped - while a genuine mismatch (e.g. GiNaC source
|
|
11
|
+
# changed unexpectedly) still aborts the build loudly.
|
|
12
|
+
#
|
|
13
|
+
# That recognition used to be "reverse-dry-run the whole patch; if it applies,
|
|
14
|
+
# it is already applied". That is wrong for patches that touch the same region
|
|
15
|
+
# of the same file, and it broke the 2026-09-22 nightly: patch 5 inserts
|
|
16
|
+
# exact_whole_number_exponent() and the real_part()/imag_part() preamble
|
|
17
|
+
# exactly into patch 4's trailing context, so against a tree carrying both,
|
|
18
|
+
# patch 4 no longer reverses (its hunk 1 wants power::real_part() to follow
|
|
19
|
+
# binomial_expansion_pow(), and now it does not) while its hunk 1 still
|
|
20
|
+
# *forward*-matched with fuzz somewhere else. Neither branch held and the
|
|
21
|
+
# script aborted on a correctly patched tree.
|
|
22
|
+
#
|
|
23
|
+
# So record what was applied instead of re-deriving it: a stamp per patch under
|
|
24
|
+
# $stamp_dir, holding that patch's checksum. The stamp lives inside the source
|
|
25
|
+
# tree, so a re-extracted tarball correctly starts over, and editing a patch
|
|
26
|
+
# invalidates only its own stamp. The two fallbacks below adopt a tree that was
|
|
27
|
+
# patched before stamps existed - including the tree the 2026-09-22 failure
|
|
28
|
+
# left behind - and write its stamps, so this heals in place with no need to
|
|
29
|
+
# blow away build/.
|
|
30
|
+
set -euo pipefail
|
|
31
|
+
|
|
32
|
+
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
33
|
+
stamp_dir=".pyoomph-ginac-patches"
|
|
34
|
+
|
|
35
|
+
# The first two fix the same class of bug (GiNaC hashing the ASLR-dependent
|
|
36
|
+
# address of an RTTI type-name string instead of something deterministic) in
|
|
37
|
+
# two different spots; the third stops power::to_polynomial() recursing
|
|
38
|
+
# forever on a negative integer power of a power with a symbolic exponent; the
|
|
39
|
+
# fourth stops power::real_part()/imag_part() raising pow(0,0) on the end terms
|
|
40
|
+
# of their binomial expansion; the fifth lets those two use that binomial branch
|
|
41
|
+
# for an inexact whole-number exponent (2.0) as well, instead of falling through
|
|
42
|
+
# to a polar form that buries the basis in an atan2.
|
|
43
|
+
# See each patch's own header comment for the full rationale. Applied in
|
|
44
|
+
# order; add further patches to this list as found.
|
|
45
|
+
patches=(
|
|
46
|
+
"ginac-deterministic-hash-seed.patch"
|
|
47
|
+
"ginac-deterministic-constant-hash.patch"
|
|
48
|
+
"ginac-to-polynomial-symbolic-exponent.patch"
|
|
49
|
+
"ginac-binomial-real-imag-pow00.patch"
|
|
50
|
+
"ginac-inexact-whole-number-exponent.patch"
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
# Every non-blank line a patch adds, already present in the file it adds it to?
|
|
54
|
+
# The last-resort "already applied" test, and the only one that survives a
|
|
55
|
+
# later patch rewriting an earlier one's context: it asks about the state of
|
|
56
|
+
# the tree rather than about whether patch(1) can still line the hunks up.
|
|
57
|
+
# Exact whole-line matching, so it does not confuse an added line with a
|
|
58
|
+
# similar one elsewhere; context and removed lines are deliberately ignored.
|
|
59
|
+
added_lines_all_present() {
|
|
60
|
+
awk '
|
|
61
|
+
/^\+\+\+ / { target = $2; sub(/^b\//, "", target); next }
|
|
62
|
+
/^--- / { next }
|
|
63
|
+
/^\+/ {
|
|
64
|
+
if (target == "")
|
|
65
|
+
next
|
|
66
|
+
line = substr($0, 2)
|
|
67
|
+
if (line ~ /^[[:space:]]*$/)
|
|
68
|
+
next
|
|
69
|
+
if (!(target in loaded)) {
|
|
70
|
+
loaded[target] = 1
|
|
71
|
+
while ((getline l < target) > 0)
|
|
72
|
+
present[target SUBSEP l] = 1
|
|
73
|
+
close(target)
|
|
74
|
+
}
|
|
75
|
+
if (!((target SUBSEP line) in present))
|
|
76
|
+
ok = 1
|
|
77
|
+
}
|
|
78
|
+
END { exit ok }
|
|
79
|
+
' "$1"
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
# sha256sum is GNU coreutils and is NOT on a stock macOS: the arm64 prebuild runner died here with
|
|
83
|
+
# "sha256sum: command not found" (exit 127) while the Intel one happened to have coreutils pulled in
|
|
84
|
+
# by some other brew formula, so this broke on exactly one of the four prebuild platforms. BSD/macOS
|
|
85
|
+
# ships `shasum -a 256` instead, and openssl is the last resort for an image with neither. Only the
|
|
86
|
+
# hex digest is wanted, hence the cut in every branch - the three tools pad and order their output
|
|
87
|
+
# differently ("<hash> <file>" for the first two, "SHA256(<file>)= <hash>" for openssl).
|
|
88
|
+
if command -v sha256sum >/dev/null 2>&1; then
|
|
89
|
+
checksum_of() { sha256sum "$1" | cut -d' ' -f1; }
|
|
90
|
+
elif command -v shasum >/dev/null 2>&1; then
|
|
91
|
+
checksum_of() { shasum -a 256 "$1" | cut -d' ' -f1; }
|
|
92
|
+
elif command -v openssl >/dev/null 2>&1; then
|
|
93
|
+
checksum_of() { openssl dgst -sha256 "$1" | awk '{print $NF}'; }
|
|
94
|
+
else
|
|
95
|
+
echo "none of sha256sum, shasum or openssl is available; cannot checksum the patches" >&2
|
|
96
|
+
exit 1
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
mkdir -p "$stamp_dir"
|
|
100
|
+
|
|
101
|
+
for patch_name in "${patches[@]}"; do
|
|
102
|
+
patch_file="$script_dir/$patch_name"
|
|
103
|
+
stamp_file="$stamp_dir/$patch_name.applied"
|
|
104
|
+
checksum="$(checksum_of "$patch_file")"
|
|
105
|
+
|
|
106
|
+
if [ -f "$stamp_file" ] && [ "$(cat "$stamp_file")" = "$checksum" ]; then
|
|
107
|
+
echo "$patch_name already applied (stamp), skipping."
|
|
108
|
+
continue
|
|
109
|
+
fi
|
|
110
|
+
|
|
111
|
+
# --fuzz=0: a hunk must match exactly. With patch(1)'s default fuzz of 2 an
|
|
112
|
+
# already-applied patch can half-match somewhere else entirely - which is
|
|
113
|
+
# how patch 4 reported "Hunk #1 succeeded at 698 with fuzz 1 (offset 36
|
|
114
|
+
# lines)" against a tree that already had it - and applying that would
|
|
115
|
+
# duplicate the addition rather than fail.
|
|
116
|
+
if patch -p1 -N --fuzz=0 --dry-run -s -i "$patch_file" >/dev/null 2>&1; then
|
|
117
|
+
patch -p1 -N --fuzz=0 -i "$patch_file"
|
|
118
|
+
elif patch -p1 -R --fuzz=0 --dry-run -s -i "$patch_file" >/dev/null 2>&1; then
|
|
119
|
+
echo "$patch_name already applied (reverses cleanly), recording stamp."
|
|
120
|
+
elif added_lines_all_present "$patch_file"; then
|
|
121
|
+
echo "$patch_name already applied (every added line present), recording stamp."
|
|
122
|
+
else
|
|
123
|
+
echo "ERROR: $patch_name does not apply to $(pwd) and is not already applied - GiNaC source may have changed unexpectedly." >&2
|
|
124
|
+
exit 1
|
|
125
|
+
fi
|
|
126
|
+
|
|
127
|
+
printf '%s\n' "$checksum" > "$stamp_file"
|
|
128
|
+
done
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
Stop GiNaC::power::real_part()/imag_part() from raising "pow(0,0) is undefined" on an integer power
|
|
2
|
+
whose basis has a zero real or a zero imaginary part.
|
|
3
|
+
|
|
4
|
+
Both build Re/Im of (a+I*b)^N from the binomial expansion and write each term as
|
|
5
|
+
binomial(NN,n) * pow(a, NN-n) * pow(b, n). A binomial expansion needs the 0^0 == 1 convention for
|
|
6
|
+
its end terms, and GiNaC's pow() refuses: pow(0,0) throws. So (I*x)^2, whose expansion contains the
|
|
7
|
+
factor a^0 with a == Re(I*x) == 0, aborts code generation with a ValueError that says nothing about
|
|
8
|
+
where it came from. Every terminating case is unchanged: pow(x,0) is 1 for every x for which the
|
|
9
|
+
old code did not throw.
|
|
10
|
+
|
|
11
|
+
pyoomph reaches it from the azimuthal real/imaginary split. subexpression() now reports the real and
|
|
12
|
+
imaginary parts of a marker whose content is provably real (that is what keeps the split from
|
|
13
|
+
multiplying products out, see dev_docs/subexpression_unit_analysis_stall.md), so mul::find_real_imag
|
|
14
|
+
can now conclude that the real part of a factor is exactly zero, where before it produced a held
|
|
15
|
+
real_part() node that was never zero. The GiNaC bug is independent of pyoomph - "ex e = pow(I*x, 2);
|
|
16
|
+
e.real_part();" reproduces it - and is what to send upstream.
|
|
17
|
+
|
|
18
|
+
--- a/ginac/power.cpp
|
|
19
|
+
+++ b/ginac/power.cpp
|
|
20
|
+
@@ -662,6 +662,17 @@
|
|
21
|
+
return conjugate_function(*this).hold();
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
+// x^n for one factor of a binomial expansion, with the 0^0 == 1 convention that such an expansion
|
|
25
|
+
+// requires. GiNaC's pow() throws "power::eval(): pow(0,0) is undefined" instead, which makes
|
|
26
|
+
+// real_part()/imag_part() of an integer power abort whenever the basis has a zero real OR a zero
|
|
27
|
+
+// imaginary part - e.g. (I*x)^2, whose expansion contains a term with the factor a^0 = 0^0.
|
|
28
|
+
+static ex binomial_expansion_pow(const ex & x, long n)
|
|
29
|
+
+{
|
|
30
|
+
+ if (n == 0)
|
|
31
|
+
+ return _ex1;
|
|
32
|
+
+ return pow(x, n);
|
|
33
|
+
+}
|
|
34
|
+
+
|
|
35
|
+
ex power::real_part() const
|
|
36
|
+
{
|
|
37
|
+
// basis == a+I*b, exponent == c+I*d
|
|
38
|
+
@@ -683,7 +694,7 @@
|
|
39
|
+
ex numer = N > 0 ? _ex1 : pow(pow(a,2) + pow(b,2), NN);
|
|
40
|
+
ex result = 0;
|
|
41
|
+
for (long n = 0; n <= NN; n += 2) {
|
|
42
|
+
- ex term = binomial(NN, n) * pow(a, NN-n) * pow(b, n) / numer;
|
|
43
|
+
+ ex term = binomial(NN, n) * binomial_expansion_pow(a, NN-n) * binomial_expansion_pow(b, n) / numer;
|
|
44
|
+
if (n % 4 == 0) {
|
|
45
|
+
result += term; // sign: I^n w/ n == 4*m
|
|
46
|
+
} else {
|
|
47
|
+
@@ -720,7 +731,7 @@
|
|
48
|
+
ex numer = N > 0 ? _ex1 : pow(pow(a,2) + pow(b,2), NN);
|
|
49
|
+
ex result = 0;
|
|
50
|
+
for (long n = 1; n <= NN; n += 2) {
|
|
51
|
+
- ex term = binomial(NN, n) * pow(a, NN-n) * pow(b, n) / numer;
|
|
52
|
+
+ ex term = binomial(NN, n) * binomial_expansion_pow(a, NN-n) * binomial_expansion_pow(b, n) / numer;
|
|
53
|
+
if (n % 4 == p) {
|
|
54
|
+
result += term; // sign: I^n w/ n == 4*m+p
|
|
55
|
+
} else {
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
Make GiNaC::power::real_part()/imag_part() use their integer-binomial branch for an INEXACT
|
|
2
|
+
whole-number exponent too, instead of falling through to the polar form.
|
|
3
|
+
|
|
4
|
+
Both decide whether the (exact, rational) binomial expansion of Re/Im of (a+I*b)^N applies by asking
|
|
5
|
+
exponent.info(integer). An inexact 2.0 does not satisfy that even though the expansion is just as
|
|
6
|
+
valid for it, so they take the general branch
|
|
7
|
+
|
|
8
|
+
|X|^c * exp(-d*atan2(b,a)) * cos(c*atan2(b,a) + d*log|X|)
|
|
9
|
+
|
|
10
|
+
which is mathematically right and useless to a caller that must not have the basis appear inside a
|
|
11
|
+
transcendental function. In pyoomph it is the dimensional analysis of a residual that then fails:
|
|
12
|
+
the basis is a mass density, atan2 hides its units from collect_base_units(), and code generation
|
|
13
|
+
aborts with "The added residual contribution is not dimensionless. It still carries the base units:
|
|
14
|
+
kilogram, meter". The exponent reached that state through a cache that compared the exact -2 to a
|
|
15
|
+
stored -2.0 - GiNaC hashes and compares numbers by value, and ex::compare() then unifies the two by
|
|
16
|
+
pointer, rewriting the power in place.
|
|
17
|
+
|
|
18
|
+
That cache is fixed in pyoomph, and keeping numbers exact is where the problem belongs. This is the
|
|
19
|
+
backstop for the whole class: an exponent that is an integer VALUE is treated as the integer it is,
|
|
20
|
+
by redoing the call with the exact number. Nothing else changes - every case that already took the
|
|
21
|
+
binomial branch had an exact exponent and is untouched.
|
|
22
|
+
|
|
23
|
+
This patch applies on top of ginac-binomial-real-imag-pow00.patch (it shares its context) and is
|
|
24
|
+
worth sending upstream together with it.
|
|
25
|
+
|
|
26
|
+
--- a/ginac/power.cpp
|
|
27
|
+
+++ b/ginac/power.cpp
|
|
28
|
+
@@ -673,8 +673,38 @@
|
|
29
|
+
return pow(x, n);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
+// An exponent that is an inexact numeric happening to be a whole number - 2.0 rather than 2 - as
|
|
33
|
+
+// the exact integer it is, or the expression unchanged if it is not one. real_part() and
|
|
34
|
+
+// imag_part() below decide whether they may use the (exact, real) integer-binomial expansion by
|
|
35
|
+
+// asking exponent.info(integer), which an inexact 2.0 does not satisfy even though the expansion is
|
|
36
|
+
+// just as valid for it. They then fall through to the general polar form
|
|
37
|
+
+// |X|^c*exp(-d*atan2(b,a))*cos(c*atan2(b,a)+d*log|X|), which is correct but useless to any caller
|
|
38
|
+
+// that has to keep the result free of transcendental functions of the basis - in pyoomph, the
|
|
39
|
+
+// dimensional analysis of a residual, which cannot separate the units of a basis that has landed
|
|
40
|
+
+// inside an atan2. Numbers should of course be kept exact in the first place; this is the backstop.
|
|
41
|
+
+static ex exact_whole_number_exponent(const ex & e)
|
|
42
|
+
+{
|
|
43
|
+
+ if (!is_exactly_a<numeric>(e))
|
|
44
|
+
+ return e;
|
|
45
|
+
+ const numeric & n = ex_to<numeric>(e);
|
|
46
|
+
+ if (n.is_crational() || !n.is_real())
|
|
47
|
+
+ return e;
|
|
48
|
+
+ const double d = n.to_double();
|
|
49
|
+
+ if (d > 1e15 || d < -1e15)
|
|
50
|
+
+ return e;
|
|
51
|
+
+ const long l = (long)d;
|
|
52
|
+
+ if ((double)l != d)
|
|
53
|
+
+ return e;
|
|
54
|
+
+ return numeric(l);
|
|
55
|
+
+}
|
|
56
|
+
+
|
|
57
|
+
ex power::real_part() const
|
|
58
|
+
{
|
|
59
|
+
+ {
|
|
60
|
+
+ const ex xexponent = exact_whole_number_exponent(exponent);
|
|
61
|
+
+ if (!are_ex_trivially_equal(xexponent, exponent))
|
|
62
|
+
+ return pow(basis, xexponent).real_part();
|
|
63
|
+
+ }
|
|
64
|
+
// basis == a+I*b, exponent == c+I*d
|
|
65
|
+
const ex a = basis.real_part();
|
|
66
|
+
const ex c = exponent.real_part();
|
|
67
|
+
@@ -711,6 +741,11 @@
|
|
68
|
+
|
|
69
|
+
ex power::imag_part() const
|
|
70
|
+
{
|
|
71
|
+
+ {
|
|
72
|
+
+ const ex xexponent = exact_whole_number_exponent(exponent);
|
|
73
|
+
+ if (!are_ex_trivially_equal(xexponent, exponent))
|
|
74
|
+
+ return pow(basis, xexponent).imag_part();
|
|
75
|
+
+ }
|
|
76
|
+
// basis == a+I*b, exponent == c+I*d
|
|
77
|
+
const ex a = basis.real_part();
|
|
78
|
+
const ex c = exponent.real_part();
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
Stop GiNaC::power::to_polynomial() from recursing forever on (x^a)^(-n), i.e. a negative integer
|
|
2
|
+
power of a power whose own exponent is symbolic.
|
|
3
|
+
|
|
4
|
+
The negint branch rebuilds pow(basis_pref, exponent) and recurses into it, justified by the comment
|
|
5
|
+
"(A*B)^n will be automagically transformed to A^n*B^n". That holds for a `mul` basis, and for a
|
|
6
|
+
`power` basis whose inner exponent is numeric ((x^3)^(-2) evaluates to x^(-6)). It does NOT hold for
|
|
7
|
+
a `power` basis with a SYMBOLIC inner exponent: power::eval only contracts (x^a)^b into x^(a*b) when
|
|
8
|
+
that is provably valid, since for symbolic a the two sides differ across the branch cut. So
|
|
9
|
+
pow((x^a), -2) evaluates back to the very expression to_polynomial was called on, and the recursion
|
|
10
|
+
is a self-call with an unchanged argument -- roughly 47000 frames deep here before the stack runs
|
|
11
|
+
out, with no diagnostic of any kind.
|
|
12
|
+
|
|
13
|
+
Recursing only when the rebuilt expression actually differs leaves every terminating case
|
|
14
|
+
bit-identical (there t differs from *this by construction) and turns the non-terminating one into
|
|
15
|
+
the same opaque-symbol replacement that to_polynomial already applies to any other non-polynomial
|
|
16
|
+
subexpression -- including, without this patch, the closely related (x^a)^(1/2).
|
|
17
|
+
|
|
18
|
+
pyoomph reaches it through unit extraction: collect_base_units() calls collect_common_factors(),
|
|
19
|
+
which calls to_polynomial(). A Vignes-interpolated Maxwell-Stefan diffusivity written as
|
|
20
|
+
D0_ij^e_ij * D0_ji^e_ji has composition FIELDS in its exponents, and when the mixture viscosity
|
|
21
|
+
inside D0 is a sum the unit symbols do not cancel automatically, leaving factors of the form
|
|
22
|
+
kilogram^(<field expression>) for collect_common_factors to choke on. See
|
|
23
|
+
dev_docs/examples/ginac_to_polynomial_symbolic_exponent.cpp, which reproduces it in five lines with
|
|
24
|
+
no pyoomph involved and is what to send upstream.
|
|
25
|
+
|
|
26
|
+
--- a/ginac/normal.cpp
|
|
27
|
+
+++ b/ginac/normal.cpp
|
|
28
|
+
@@ -2720,10 +2720,13 @@
|
|
29
|
+
if (is_exactly_a<mul>(basis_pref) || is_exactly_a<power>(basis_pref)) {
|
|
30
|
+
// (A*B)^n will be automagically transformed to A^n*B^n
|
|
31
|
+
ex t = pow(basis_pref, exponent);
|
|
32
|
+
- return t.to_polynomial(repl);
|
|
33
|
+
+ // ... but a power with a SYMBOLIC exponent is not, and rebuilding it unchanged
|
|
34
|
+
+ // would make this an infinite self-recursion. Fall through to the replacement
|
|
35
|
+
+ // below instead, which is what any other non-polynomial basis gets.
|
|
36
|
+
+ if (!t.is_equal(*this))
|
|
37
|
+
+ return t.to_polynomial(repl);
|
|
38
|
+
}
|
|
39
|
+
- else
|
|
40
|
+
- return pow(replace_with_symbol(pow(basis, _ex_1), repl), -exponent);
|
|
41
|
+
+ return pow(replace_with_symbol(pow(basis, _ex_1), repl), -exponent);
|
|
42
|
+
}
|
|
43
|
+
else
|
|
44
|
+
return replace_with_symbol(*this, repl);
|
|
@@ -40,6 +40,12 @@ parser.add_argument("--report-json", metavar="PATH", default=None, help="Also wr
|
|
|
40
40
|
parser.add_argument("--mpirun", type=int, default=0, metavar="N", help="Run each script under 'mpirun -n N' instead of directly. Default 0, i.e. no mpirun")
|
|
41
41
|
parser.add_argument("--omp", type=int, default=0, metavar="N", help="Pass '--omp N' to each script, i.e. assemble the elements on N threads. Default 0, i.e. leave each script on the serial element loop. Composes with --mpirun, which is threads per rank then")
|
|
42
42
|
parser.add_argument("--distribute", help="Pass --distribute to each script, i.e. distribute the mesh over the ranks. Only meaningful together with --mpirun", action="store_true")
|
|
43
|
+
# Deliberately general rather than one option per solver. Note what forcing a solver DOES, though:
|
|
44
|
+
# it changes what is being computed, not just how fast. petsc_mumps collapses hopf_switch's arclength
|
|
45
|
+
# continuation and plain --petsc (an iterative KSP) fails outright on the augmented systems, so a
|
|
46
|
+
# failure under this flag is not by itself a failure of the backend - re-run the same script without
|
|
47
|
+
# it before concluding anything.
|
|
48
|
+
parser.add_argument("--extra-arg", action="append", default=[], metavar="ARG", help="Pass this argument on to every script. Repeatable, e.g. --extra-arg --mumps. See the note in the source about what forcing a solver changes")
|
|
43
49
|
# For chasing one flaky script across the platforms: a full pass is hours per OS, and a script that
|
|
44
50
|
# only fails once in a while has to be run as the CI runs it - same wheel, same runner - not once in
|
|
45
51
|
# a scratch directory. Substring rather than glob, on "Folder/script.py", so that a bare script name
|
|
@@ -158,6 +164,14 @@ _MISSING_MODULE=re.compile(rb"ModuleNotFoundError: No module named '([A-Za-z0-9_
|
|
|
158
164
|
_UNAVAILABLE_SOLVER=re.compile(rb"^RuntimeError: .* is not available \(ModuleNotFoundError: No module named '([A-Za-z0-9_.]+)'\)")
|
|
159
165
|
_BROKEN_IMPORT=re.compile(rb"^ImportError: (.*)$")
|
|
160
166
|
_TRACEBACK_FRAME=re.compile(rb'^ File "([^"]+)"')
|
|
167
|
+
# Under mpirun every stderr line is tagged "[rank N] " - on every rank and in every --mpi-output mode,
|
|
168
|
+
# see pyoomph/generic/logging.py _ConsoleWrapper._decorate. The three anchored patterns above would
|
|
169
|
+
# therefore never match in the MPI pass (only _MISSING_MODULE, which searches, survived), so the tag
|
|
170
|
+
# comes off before a line is examined.
|
|
171
|
+
_RANK_TAG=re.compile(rb"^\[rank \d+\] ?")
|
|
172
|
+
|
|
173
|
+
def untag_rank(line):
|
|
174
|
+
return _RANK_TAG.sub(b"",line)
|
|
161
175
|
|
|
162
176
|
def missing_optional_module(output):
|
|
163
177
|
"""(package, why) when an optional package, and nothing else, ended this script - else None.
|
|
@@ -183,7 +197,7 @@ def missing_optional_module(output):
|
|
|
183
197
|
lines=output.strip().splitlines()
|
|
184
198
|
if not lines:
|
|
185
199
|
return None
|
|
186
|
-
last=lines[-1]
|
|
200
|
+
last=untag_rank(lines[-1])
|
|
187
201
|
m=_UNAVAILABLE_SOLVER.match(last)
|
|
188
202
|
if m is not None:
|
|
189
203
|
name=m.group(1).decode().split(".")[0]
|
|
@@ -195,7 +209,7 @@ def missing_optional_module(output):
|
|
|
195
209
|
m=_BROKEN_IMPORT.match(last)
|
|
196
210
|
if m is None:
|
|
197
211
|
return None
|
|
198
|
-
frames=[f.group(1).decode() for f in (_TRACEBACK_FRAME.match(l) for l in lines) if f]
|
|
212
|
+
frames=[f.group(1).decode() for f in (_TRACEBACK_FRAME.match(untag_rank(l)) for l in lines) if f]
|
|
199
213
|
for name in _OPTIONAL_MODULES:
|
|
200
214
|
if any(("/"+name+"/") in p or p.endswith("/"+name+".py") for p in frames):
|
|
201
215
|
return (name,"is installed but cannot be loaded here ("+m.group(1).decode()+")")
|
|
@@ -207,16 +221,40 @@ def missing_optional_module(output):
|
|
|
207
221
|
# for why - so without dropping that epilogue every optional-package skip would be counted as a real
|
|
208
222
|
# failure in the MPI pass, which is exactly the noise the skip mechanism exists to avoid.
|
|
209
223
|
_DASH_RULE=re.compile(rb"^-{20,}$")
|
|
224
|
+
# Not everything mpirun appends is fenced, and since 2026-08-18 pyoomph appends a line of its own.
|
|
225
|
+
# Both sit AFTER the traceback and so become "the last line" that missing_optional_module() reads:
|
|
226
|
+
#
|
|
227
|
+
# pyoomph: uncaught ... -- aborting the whole job.
|
|
228
|
+
# generic/mpi.py's excepthook (commit a8973de2), which turns a rank dying alone - and the other
|
|
229
|
+
# three then spinning in a collective until the step's timeout - into an MPI_Abort. It prints
|
|
230
|
+
# this note after the traceback it has just let through.
|
|
231
|
+
# [duarte:37160] N more processes have sent help message ...
|
|
232
|
+
# Open MPI's help-message aggregator, written by mpirun itself once the job is down. Plain
|
|
233
|
+
# "[host:pid] " lines, with no dash rules around them.
|
|
234
|
+
#
|
|
235
|
+
# Together they are why the mpirun pass reported rayleigh_plateau_pinchoff.py as FAILED on the
|
|
236
|
+
# 2026-09-02 and 2026-09-03 nightlies while the serial pass skipped it for the same missing shapely.
|
|
237
|
+
_UNFENCED_EPILOGUE=(re.compile(rb"^\[[^\]\s]+:\d+\]\s"),
|
|
238
|
+
re.compile(rb"^pyoomph: uncaught \w+ on MPI rank \d+ of \d+ -- aborting the whole job\."))
|
|
210
239
|
|
|
211
240
|
def strip_mpirun_epilogue(output):
|
|
212
241
|
lines=output.rstrip().splitlines()
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
242
|
+
peeled=True
|
|
243
|
+
while peeled: # the two kinds interleave, so keep going until a pass changes nothing
|
|
244
|
+
peeled=False
|
|
245
|
+
while len(lines)>=2 and _DASH_RULE.match(lines[-1].strip()):
|
|
246
|
+
for i in range(len(lines)-2,-1,-1):
|
|
247
|
+
if _DASH_RULE.match(lines[i].strip()):
|
|
248
|
+
del lines[i:]
|
|
249
|
+
peeled=True
|
|
250
|
+
break
|
|
251
|
+
else:
|
|
252
|
+
break # an unpaired rule: not one of mpirun's blocks, leave the output alone
|
|
253
|
+
while lines and not lines[-1].strip():
|
|
254
|
+
lines.pop()
|
|
255
|
+
while lines and any(p.match(untag_rank(lines[-1].strip())) for p in _UNFENCED_EPILOGUE):
|
|
256
|
+
lines.pop()
|
|
257
|
+
peeled=True
|
|
220
258
|
while lines and not lines[-1].strip():
|
|
221
259
|
lines.pop()
|
|
222
260
|
return b"\n".join(lines)
|
|
@@ -437,6 +475,7 @@ for d in glob.glob("./*/"):
|
|
|
437
475
|
cmd.append("--distribute")
|
|
438
476
|
if args.omp>0:
|
|
439
477
|
cmd+=["--omp",str(args.omp)]
|
|
478
|
+
cmd+=args.extra_arg
|
|
440
479
|
started_at=time.time()
|
|
441
480
|
proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, env=env)
|
|
442
481
|
#proc = subprocess.Popen([sys.executable, '-u', f], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
@@ -550,6 +589,7 @@ if report_json is not None:
|
|
|
550
589
|
"python":sys.version.split()[0],
|
|
551
590
|
"options":{"quick_test":args.quick_test,"tcc":args.tcc,"no_petsc":args.no_petsc,
|
|
552
591
|
"mpirun":args.mpirun,"omp":args.omp,"distribute":args.distribute,
|
|
592
|
+
"extra_arg":args.extra_arg,
|
|
553
593
|
"timeout":args.timeout,
|
|
554
594
|
"skips":skips,"only":args.only},
|
|
555
595
|
"scripts":records},jf,indent=1)
|