Source code for sfepy.tests.test_declarative_examples

import os
import pytest
from sfepy.base.testing import check_conditions, run_declaratice_example

# Relative to sfepy.base_dir, see run_declaratice_example().
examples_dir = 'examples/'

[docs] def inedir(filename): return os.path.join(examples_dir, filename)
examples = [ 'acoustics/acoustics.py', 'acoustics/acoustics3d.py', 'acoustics/helmholtz_apartment.py', 'acoustics/vibro_acoustic3d.py', 'diffusion/cube.py', 'diffusion/darcy_flow_multicomp.py', 'diffusion/laplace_1d.py', 'diffusion/laplace_coupling_lcbcs.py', 'diffusion/laplace_fluid_2d.py', 'diffusion/laplace_time_ebcs.py', 'diffusion/poisson.py', 'diffusion/poisson_field_dependent_material.py', 'diffusion/poisson_functions.py', 'diffusion/poisson_neumann.py', 'diffusion/poisson_nonlinear_material.py', 'diffusion/poisson_periodic_boundary_condition.py', 'diffusion/sinbc.py', 'diffusion/time_advection_diffusion.py', 'diffusion/time_heat_equation_multi_material.py', 'diffusion/time_poisson.py', 'homogenization/linear_elastic_mM.py', 'large_deformation/active_fibres.py', 'large_deformation/balloon.py', 'large_deformation/perfusion_tl.py', 'linear_elasticity/elastic_contact_planes.py', 'linear_elasticity/elastic_contact_sphere.py', 'linear_elasticity/elastic_shifted_periodic.py', 'linear_elasticity/elastodynamic.py', 'linear_elasticity/its2D_2.py', 'linear_elasticity/linear_elastic.py', 'linear_elasticity/linear_elastic_damping.py', 'linear_elasticity/linear_elastic_probes.py', 'linear_elasticity/linear_elastic_tractions.py', 'linear_elasticity/linear_elastic_up.py', 'linear_elasticity/linear_viscoelastic.py', 'linear_elasticity/material_nonlinearity.py', 'linear_elasticity/mixed_mesh.py', 'linear_elasticity/modal_analysis_declarative.py', 'linear_elasticity/multi_node_lcbcs.py', 'linear_elasticity/nodal_lcbcs.py', 'linear_elasticity/prestress_fibres.py', 'linear_elasticity/seismic_load.py', 'linear_elasticity/shell10x_cantilever.py', 'linear_elasticity/truss_bridge3d.py', 'linear_elasticity/truss_bridge.py', 'linear_elasticity/two_bodies_contact.py', 'linear_elasticity/wedge_mesh.py', 'multi_physics/biot.py', 'multi_physics/biot_npbc.py', 'multi_physics/biot_npbc_lagrange.py', 'multi_physics/biot_short_syntax.py', 'multi_physics/piezo_elasticity.py', 'multi_physics/piezo_elastodynamic.py', 'multi_physics/thermo_elasticity.py', 'multi_physics/thermo_elasticity_ess.py', 'navier_stokes/navier_stokes.py', 'navier_stokes/navier_stokes2d.py', 'navier_stokes/stabilized_navier_stokes.py', 'navier_stokes/stokes.py', 'navier_stokes/stokes_slip_bc.py', 'quantum/boron.py', 'quantum/hydrogen.py', 'quantum/oscillator.py', 'quantum/well.py', ] try: from igakit import igalib; igalib except ImportError: pass else: examples.extend([ 'diffusion/poisson_iga.py', 'linear_elasticity/linear_elastic_iga.py', 'navier_stokes/navier_stokes2d_iga.py', ])
[docs] @pytest.mark.parametrize('ex_filename', examples) def test_examples(ex_filename, output_dir): conditions = run_declaratice_example( ex_filename=inedir(ex_filename), output_dir=output_dir, remove_prefix=examples_dir, ) if ex_filename == 'large_deformation/active_fibres.py': # Special-case the first iteration, as the solver converges slowly. ok = (conditions[1:] == 0).all() ok = ok and (conditions[0] == 1) elif ex_filename == 'large_deformation/balloon.py': # Special-case the steps with a time-step reduction. ok = (conditions[1] == 1) ok = ok and (conditions[0] == 0) and (conditions[2:] == 0).all() else: ok = check_conditions(conditions) assert ok
examples_dg = [ 'dg/advection_1D.py', 'dg/advection_2D.py', 'dg/advection_diffusion_2D.py', 'dg/laplace_2D.py', ]
[docs] @pytest.mark.parametrize('ex_filename', examples_dg) def test_examples_dg(ex_filename, output_dir): conditions = run_declaratice_example( ex_filename=inedir(ex_filename), output_dir=output_dir, ext='.msh', remove_prefix=examples_dir, ) ok = check_conditions(conditions) assert ok