SfePy Changelog

What's new in SfePy 2013.4

Feb 3, 2014
  • fix nodal polynomial spaces for orders >= 3:
  • merge branch ‘fix_nodal_basis’ - closes #205
  • fix get_facet_dof_permutations(), H1NodalMixin._setup_facet_orientations()
  • permutations should come from facet nodes in reference order
  • increase approximation orders of 3_4, 3_8 in tests/test_poly_spaces.py
  • prevent building ori_map for higher order elements in FESurface.__init__()
  • fields:
  • reimplement get_facet_dof_permutations() using simple iterators
  • update Field.from_conf() to set field kind from region kind
  • update surface field syntax in examples
  • simplify integrals - remove integral kind:
  • update transform_integrals() - remove/ignore integral kind
  • clean up sfepy/fem/integrals.py, add module docstring
  • remove kind attribute of Integral
  • remove Integral.get_key()
  • update Term for no integral kind, remove .get_integral_info()
  • remove PointTermBase
  • update sfepy.fem modules for no integral kind
  • allow ‘i’ as integral name in equations
  • update examples for no integral kind
  • update tests for no integral kind
  • docs: update users guide and tutorial for no integral kind
  • mesh, domain, regions:
  • add tdim argument to mesh_set_coors()
  • update CMesh to use max. topological dimension - new tdim attribute
  • update Region to use max. topological dimension - new tdim attribute
  • add tdim attribute to Domain.shape
  • update fields for max. topological dimension
  • start support of ‘plate’ integration/connectivity type:
  • merge branch ‘plate_mapping’
  • update CMapping - new mtx_t attribute
  • update Approximation.describe_geometry() for plate integration
  • update get_physical_qps() - new map_kind argument
  • update Term.get_physical_qps() for plate integration
  • update get_shape_kind(), Term.iter_groups() for plate integration
  • update FieldVariable.get_data_shape(), .evaluate() for plate integration
  • update Approximation.get_connectivity() for plate integration
  • new transform_asm_vectors(), transform_asm_matrices()
  • update TLMembraneTerm.weak_function() - use transform functions
  • equation sequence solver:
  • new Variables.get_dual_names()
  • clean up sfepy/fem/equations.py, add module docstring
  • new Equations.get_variable_dependencies()
  • new sfepy/base/resolve_deps.py - functions for resolving dependencies
  • new get_nums(), solvable(), remove_known(), try_block(), resolve()
  • update tests/test_base.py: new test_resolve_deps()
  • new Equations.create_subequations()
  • new ProblemDefinition.create_subproblem()
  • new EquationSequenceSolver for stationary problems with an equation sequence
  • new examples/thermo_elasticity/thermo_elasticity_ess.py + test
  • scripts:
  • script/save_basis.py: fix mesh mode, make permutations directly from mesh
  • script/plot_mesh.py: fix help message
  • simple.py: –list option can list solvers, new print_solvers()
  • new script/plot_quadratures.py - closes #178
  • update QuadraturePoints.from_table() to store true order
  • new sfepy/postprocess/plot_quadrature.py
  • new script/show_terms_use.py
  • clean up script/eval_tl_forms.py, update for current sympy
  • clean up script/evalForms.py, update for current sympy
  • terms:
  • new ContactSphereTerm (dw_contact_sphere)
  • rename sfepy/mechanics/contact_planes.py -> sfepy/mechanics/contact_bodies.py
  • new ContactSphere - elastic contact sphere
  • new ContactPlaneTerm._get_force_pars(), update .get_fargs()
  • fix empty array condition in ContactPlaneTerm.smooth_f()
  • fix docstring of VolumeSurfaceTerm
  • remove Term.has_integral, .itype, .raw_itype attributes (unused)
  • fix form_tlcc_strainGreen_VS() - Green strain computation for post-processing - out-of diagonal entries are no more doubled
  • homogenization:
  • update AcousticMassTensor, AppliedLoadTensor zero division check, fix eye call
  • update MiniAppBase.init_solvers(): allow to use different solvers for the correctors
  • miscellaneous updates:
  • new sfepy/linalg/check_derivatives.py - check_fx(), check_vfvx()
  • update HypermeshAsciiMeshIO reader: support for quad4 and tri3 cells
  • update mesh reading/writing: print infromation about supported cell types
  • generalize dict_to_array() for nD arrays
  • fix type errors under Windows: in nm.take() cells
  • fix dict_to_array() for non-array sequences
  • update QuadraturePoints.from_table() to store true order
  • simplify ProblemDefinition.__init__() - re-implements #212
  • clean up sfepy/fem/parseEq.py
  • clean up sfepy/fem/variables.py, add module docstring
  • examples and tests:
  • new examples/linear_elasticity/elastic_contact_sphere.py + test
  • update docstrings of poisson.py, poisson_short_syntax.py examples
  • add mutual references, tutorial reference
  • remove comments in examples/diffusion/poisson.py as their text is in the tutorial
  • update docstring of poisson_periodic_boundary_condition.py example
  • update docstring of poisson_field_dependent_material.py example
  • new examples/diffusion/poisson_neumann.py + test - closes #195
  • docs:
  • fix issue, closes #236: move downloads from http://code.google.com/p/sfepy/ to sfepy.org/downloads
  • fix duplicated module index in html
  • remove link to GoogleWiki
  • add labels to tutorial

New in SfePy 2011.3 (Aug 11, 2011)

  • Major update of terms - merge easier_terms branch:
  • Aim: easier usage and definition of terms while retaining original Cfunctions
  • Approximations and fields:
  • new Approximation.get_connectivity()
  • update Approximation.describe_geometry():
  • new return_mapping argument
  • make volume mappings local to given region
  • include used polynomial space in geometry object:
  • update Approximation.describe_geometry()
  • manage mappings in Field:
  • new Field.clear_mappings(), .save_mappings(), .create_mapping(),
  • .get_mapping()
  • Equations and variables:
  • evaluate and cache quantities in FieldVariable:
  • new FieldVariable.evaluate(), .clear_evaluate_cache()
  • update Variable.__call__() history behaviour for step 0
  • update Variable.advance() to advance evaluate cache
  • copy equations variables in ProblemDefinition.create_evaluable()
  • invalidate evaluate cache in Variable.data_from_any()
  • Factor out variable evaluation to new evaluate_variable.py:
  • update FieldVariable.evaluate()
  • new eval_real(), eval_complex()
  • update Equations.invalidate_term_caches() for evaluate caches:
  • new FieldVariable.invalidate_evaluate_cache()
  • move NewTerm.get_shape_kind() to get_shape_kind()
  • update Terms

New in SfePy 2011.2 (May 31, 2011)

  • xperimental implementation of terms merge new_terms branch:
  • aim: easier usage and definition of terms
  • new NewTerm class, to coexist with Term for some time
  • update FieldVariable:
  • new .set_current_group(), .clear_current_group()
  • new .val(), .val_qp(), .grad(), .grad_qp(), .iter_dofs()
  • new .assign_geometries(), .clear_bases(), .setup_bases()
  • new .get_element_zeros(), .get_component_indices()
  • add spatial dimension attribute
  • cache base functions and geometries
  • new get_range_indices()
  • new examples:
  • examples/miscellaneous/compare_scalar_terms.py
  • examples/miscellaneous/compare_vector_terms.py
  • new new terms:
  • dw_new_diffusion
  • dw_new_mass_scalar
  • dw_new_mass
  • dw_new_lin_elastic
  • implement basic membrane elements merge tl_membrane_term branch:
  • new dw_tl_membrane (Mooney-Rivlin membrane term)
  • update build system to use exclusively setup.py:
  • update setup.py to check dependencies, prepare for using Cython
  • update setup.py clean to remove files generated by in-place build
  • new setup.py options: htmldocs, pdfdocs, doxygendocs
  • remove all Makefiles
  • new MANIFEST.in for excluding paths/files from distribution
  • site configuration:
  • update options in site_cfg_template.py, update Config
  • remove archlib, numpy_include
  • rename opt_flags -> compile_flags
  • set options for building extension modules via Config
  • update and clean up setup.py files
  • docs:
  • update for no Makefiles, add sympy as dependency
  • add sphinx build file for windows
  • fix doc/doxygen.config to exclude generated files
  • update tutorial:
  • add long, short syntax sections, add TOC
  • add basic notions, sneak peek sections
  • boundary condition:
  • allow switching boundary conditions on/off depending on time:
  • update boundary conditions to have times attribute
  • update Conditions, EssentialBC, PeriodicBC, LinearCombinationBC
  • use new is_active_bc(), update matrix graph as needed
  • pass problem definition to user EBC functions:
  • update tests and examples
  • postprocessing and visualization:
  • fix Viewer and add_subdomains_surface() for animations:
  • new FileSource.setup_mat_id(), set mat_id in .create_source()
  • update ViewerGUI 'make snapshots' button
  • fix animation view setting in Viewer, ViewerGUI:
  • use all view components including distance and focal point
  • postproc.py:
  • new --opacity option
  • new --domain-specific option
  • new parse_domain_specific()
  • new sfepy/postprocess/domain_specific.py
  • new DomainSpecificPlot class, plot_displacements()
  • linalg:
  • prevent nans in cg_eigs()
  • fix cg_eigs() for array input
  • new normalize_vectors()
  • update dot_sequences() to use numpy.core.umath_tests.matrix_multiply():
  • more than ten times faster, if available!
  • input-output:
  • extractor.py: new --times option
  • support for variable time steps:
  • new extract_times()
  • new MeshIO.read_times(), HDF5MeshIO.read_times()
  • update VTKMeshIO, HDF5MeshIO to save true time step data
  • solvers:
  • update Newton:
  • new 'give_up_warp' configuration option
  • return number of iterations in status
  • support iter_hook
  • improve bad linear solver convergence report
  • allow linear solver precision relative to residual norm:
  • new 'lin_precision' solver option
  • new VariableTimeStepper time stepper with a variable time step
  • update ProblemDefinition for nonlinear solver iter_hook
  • improve convergence reporting of ScipyIterative, PETScKrylovSolver
  • add tolerance arguments to linear solvers
  • homogenization:
  • new CorrSetBCS corrector "zero" state with applied boundary conditions
  • misc:
  • new invert_remap()
  • new Region.from_faces(), .set_faces()
  • new guess_time_units()
  • add test_install.py
  • new terms:
  • dw_lin_strain_fib (linear prestrain term defined by direct. fibers)
  • removed terms:
  • remove d_surf_diffusion_integrate term (same as d_hdpm_surfdvel)
  • examples:
  • new examples/diffusion/poisson_short_syntax.py
  • rearrange examples/diffusion/poisson.py

New in SfePy 2011.1 (Mar 24, 2011)

  • implement discontinuous fields merge 'discontinuous' branch
  • use mesh connectivity to construct reference maps independently from approximations of variables (fields), always P1 or Q1, based on element geometry
  • updated Approximation.describe_geometry() and related functions
  • new DiscontinuousField, DiscontinuousApproximation classes
  • use DiscontinuousField for P0, Q0 approximations
  • new eval_nodal_coors()
  • update Approximation.eval_extra_coor()
  • new Field.average_qp_to_vertices(), .interp_to_qp()
  • update surface fields:
  • new SurfaceApproximation class, used by SurfaceField
  • new SurfaceInterpolant class, used by SurfaceField
  • fields:
  • new Field.get_true_order(), .get_vertices()
  • new Field.evaluate_at()
  • allows different behaviour for Field subclasses
  • new Field.get_output_approx_order() correct output order
  • remove Approximations class, move its functionality to Field
  • simplification to remove a layer of code that was not needed
  • Field.aps is an ordinary dict
  • methods using is_surface split between Field and SurfaceField
  • state, variables, degrees of freedom:
  • new DofInfo.get_n_dof_total()
  • new Linear Combination BC operator: IntegralMeanValueOperator
  • new EquationMap.get_operator()
  • new State.from_variables(), .set_parts()
  • add force argument to State.set_full()
  • new Variables.check_vector_size(), use it to check DOF vectors
  • fix Variables.state_to_output() for saving by parts
  • fix Variable.advance() prevent history modification
  • new FieldVariable.apply_ebc(), .apply_ic()
  • update Variables.apply_ebc(), .apply_ic()
  • new FieldVariable.get_full()
  • update Variables.make_full_vec(), remove var_name argument
  • new FieldVariable.get_reduced()
  • update Variables.strip_state_vector(), fix for non-first variables
  • remove Variable.get_indx(), update State accordingly
  • the indx attribute of a variable is local only, it does not index the
  • state vector dangerous to expose it
  • materials: rewrite updating of material parameters
  • allow material nonlinearity, i.e. parameters dependent on state
  • ProblemDefinition instance needs to be passed into
  • Materials.time_update() and related functions
  • material user function syntax changed
  • takes ts, coors, mode, equations, term, problem and group_indx
  • the coors argument are the QP coordinates for all element groups
  • merged
  • equations and evaluation:
  • split Equations.time_update() new Equations.time_update_materials()
  • fix term evaluation with complex variables
  • update Equations.eval_tangent_matrices() names argument
  • fix Equations.eval_tangent_matrices() for multi-variate terms
  • clear the matrix there, not in BasicEvaluator.eval_tangent_matrix()
  • update Equations.eval_residuals() by_blocks, names arguments
  • new Equations.print_terms()
  • add regions argument to create_evaluable()
  • terms:
  • new register_term()
  • ensure that each Term instance has caches attribute
  • ensure that all terms in equations share the same DataCaches instance
  • new Equations.setup_caches()
  • update Term.get_arg_name() add docstring, join argument
  • fix Term.assign_caches(), .get_cache() for material arguments
  • update cachesBasic for complex values
  • mesh, domain, regions:
  • generate meshes using: 2D triangle, 3D tetgen
  • speed-up mesh reading by using numpy.fromfile()
  • update read_array()
  • update VTKMeshIO, ComsolMeshIO, VTKMeshIO, MeditMeshIO
  • update skip_read_line(), read_token()
  • coordinate transformation matrix can be defined in options
  • allows translation in coordinate transformation
  • new Domain.refine() uniform tetrahedral mesh refinement
  • new sfepy/fem/refine.py: refine_3_4()
  • new Region.from_vertices()
  • new Region.update_shape(), update Region.complete_description()
  • new Facets.get_complete_facets()
  • problem definition:
  • new ProblemDefinition.setup_hooks()
  • fix ProblemDefinition.solve() for LCBCs
  • new ProblemDefinition.set_output_dir(), .set_solvers_instances()
  • update ProblemDefinition.init_solvers() to report presolve time
  • new ProblemDefinition.set_equations_instance()
  • solvers:
  • fix time_step_function() to allow presolve if possible
  • fix Newton, SemismoothNewton exception handling (define ok)
  • update/fix TimeStepper construction arguments
  • new pre_process_hook called in solve_direct
  • fix TimeStepper, get_print_info() for n_step set to 1
  • fix time stepping solver for quasistatic linear problems
  • new prepare_matrix()
  • sfepy.linalg:
  • new get_coors_in_ball()
  • new assemble1d(), unique_rows(), infinity_norm()
  • new insert_strided_axis()
  • update cg_eigs(), sym_tri_eigen(), allow eigenvalue selection
  • fix and update dot_sequences() general mode argument
  • large deformation:
  • fix HyperElasticBase for several element groups
  • fix HyperElasticBase for matrix-only assembling
  • compute stress in matrix mode if no previous residual mode call
  • fix BulkPressureTLTerm (dw_tl_bulk_pressure) for several element groups
  • update VolumeTLTerm to work in initial step
  • fix error handling in hyperelastic term caches
  • new sfepy/mechanics/membranes.py: functions for membranes
  • new describe_deformation(), get_tangent_stress_matrix(),
  • create_transformation_matrix(), create_mapping(), get_invariants()
  • schroedinger: update and clean up
  • update for recent changes (on the fly geometries, Materials under
  • Equations, for material nonlinearity, ...)
  • add iter_hook_final application option
  • fix getting parametric hook for inputs with define()
  • homogenization:
  • update plotPerfusionCoefs.py
  • new CorrEqPar parametrized equation via 'eq_pars'
  • update TCorrectorsViaPressureEVP for Variable.get_full()
  • allow complex coefficients
  • fix CorrectorsPermeability
  • update PressureEigenvalueProblem
  • remove obsolete fading memory coefficients
  • remove ViscousFMCoef, BiotFMCoef, BiotFM2Coef, FMRBiotModulus
  • update fading memory coefficients CoefFMSymSym, CoefFMSym, CoefFMOne
  • fading corrector file names obtained by set_variables()
  • update time dependent pressure eigenvalue problem based correctors
  • update TCorrectorsViaPressureEVP
  • update TCorrectorsRSViaPressureEVP, TCorrectorsPressureViaPressureEVP
  • raise original exception in MiniAppBase.init_solvers()
  • update recover_bones()
  • fix variable names in CorrMiniApp.get_output() for no components
  • genPerMesh.py:
  • new --repeat option
  • split and move functionality into sfepy.fem
  • move fix_double_nodes(), get_min_edge_size(), get_min_vertex_distance(),
  • get_min_vertex_distance_naive() into sfepy/fem/mesh.py
  • new compose_periodic_mesh()
  • remove broken --test option
  • new terms:
  • d_sum_vals (sum nodal values, for use in postprocessing)
  • d_diffusion_integrate (diffusion integral term)
  • d_surf_diffusion_integrate (diffusion surface integral term)
  • dw_diffusion_coupling (diffusion copupling term)
  • new d_div term (evaluate divergence term)
  • d_surface_integrate_w (integrate a variable over a surface)
  • d_surface_dot_w (surface dot product for both scalar and vector fields)
  • clean up in acoustic terms
  • some of them replaced by more general diffusion terms
  • simplify acoustic/diffusion sensitivity terms
  • d_llaplace_p_sa1, d_llaplace_p_sa2, d_llaplace_t_sa2 -> d_diffusion_sa
  • dw_surface_llaplace -> dw_surface_laplace
  • remove obsolete code, clean up:
  • BasicEvaluator.strip_state_vector(), LCBCEvaluator.strip_state_vector()
  • remove obsolete function and code (_fix_scalar_dc())
  • remove Field.get_extra_nodes_as_simplices(), .write_mesh()
  • simple.py: remove --save-region-field-meshes option
  • remove code depending on removed Field.get_extra_nodes_as_simplices()
  • Mesh.from_region_and_field()
  • ProblemDefinition.save_region_field_meshes()
  • remove Field.interp_c_vals_to_n_vals()
  • remove parameter 'shape' from term di_volume_integrate_mat
  • remove read_tuple()
  • docs:
  • new projections.rst, fields.rst, variables.rst
  • misc:
  • remove star imports
  • fix Output.__init__() arguments
  • new Container.extend()
  • allow construction of OneTypeList from sequence
  • fix acoustic band gaps code
  • new Interpolant.get_geom_poly_space()
  • new make_l2_projection() for scalar field variables
  • add tetrahedron quadratures of order 4 and 6
  • update get_physical_qps() use slices for efficiency
  • update Viewer plot scalar cell data as cell data if possible
  • isfepy: update startup message
  • tests and examples:
  • tests/test_projections.py: new test_projection_tri_quad()
  • new examples/linear_elasticity/material_nonlinearity.py + test
  • fix, update examples/diffusion/poisson_parametric_study.py
  • update tests/test_tensors.py
  • new test_transform_data(), test_stress_transform()
  • new tests/test_linalg.py test dot_sequences(), insert_strided_axis()
  • update tests/test_linalg.py new test_unique_rows(), test_assemble1d()
  • new tests/test_domain.py very basic tests of facets and refinement
  • many bug fixes

New in SfePy 2010.4 (Dec 6, 2010)

  • base:
  • better printing formatting for basic data types
  • docs:
  • use viewcode Sphinx extension
  • add gitwash tutorial (adapted from Numpy)
  • sfepy.linalg:
  • new insert_sparse_to_csr() insert a sparse matrix into a CSR matrix
  • new compose_sparse()
  • improve structuring:
  • move some functions from sfepy.linalg.utils to sfepy.linalg.geometry
  • remove unneeded functions
  • simplify importing:
  • import all its contents into sfepy.linalg namespace
  • new sfepy/linalg/eigen.py eigenvalues utility functions
  • new sfepy/linalg/geometry.py barycentic coordinates and simplex utilities
  • conditions:
  • make active LCBC-constrained DOF information always defined
  • update make_global_lcbc_operator() to preserve matrix blocks
  • also create and return global active LCBC-constrained DOF information
  • new NormalDirectionOperator class
  • solvers:
  • solvers: provide default name and kind for any type of conf
  • allow (re)setting data of an existing TimeStepper instance
  • use a single time stepper instance in ProblemDefinition
  • pass the instance to .set_equations() as user data to satisfy
  • time-dependent term arguments
  • update Newton, SemismoothNewton raise original residual/matrix exceptions
  • update SemismoothNewton to use compose_sparse()
  • the Jacobian needs no longer to have the non-smooth part preallocated
  • refactoring of geometries (reference mappings) merge 'geo' branch
  • create geometries as needed on the fly, similarly to term caches
  • equations only assign container for geometries to terms
  • geometries no longer stored in Approximations instances
  • greatly simplify Approximations.describe_geometry()
  • new sfepy/fem/mappings.py:
  • handle reference element mappings by new Mapping, VolumeMapping,
  • SurfaceMapping classes
  • update Equations to create, hold and update Materials:
  • only materials actually present in equations are updated during
  • ProblemDefinition.time_update() call now
  • update materials in ProblemDefinition to be created on demand
  • similar to creating variables
  • DOF vector synchronization with variables merge 'state' branch
  • new sfepy/fem/state.py
  • new State class for handling state Variables
  • Domain and Mesh:
  • new Facets class for handling edges and faces
  • remove C code superseded by Facets
  • remove unused code superseded by scipy.spatial
  • new Mesh.explode_groups()
  • update Field:
  • simplify Field, Approximations assume single base and region
  • new SurfaceField subclass of Field
  • enrich the field region syntax allow (region, 'surface') tuple
  • add is_surface attribute to Approximations, Approximation
  • update Mesh.from_region() for surface field regions
  • useful for saving SurfaceField variables with file_per_var option
  • simplify setting Field approximation order and Interpolant construction
  • move code for getting DOFs in a region to Field
  • move DOF manipulation functions to Field
  • update Equations:
  • allow passing additional connectivities to Equations.create_matrix_graph()
  • allow passing single Term to Equation.__init__()
  • update Equations.eval_tangent_matrices() block assembling mode
  • update Variables:
  • set _variables attribute in Variables.__setitem__()
  • so that any Variable has it once it is added to Variables
  • new MultiplierVariable subclass of FieldVariable
  • update Terms:
  • allow different Term integration per call mode
  • simplify setting of term geometry and connectivity types:
  • new Term.integration attribute
  • new Term.setup_integration() to determine geometry and connectivity
  • types according to the integration attribute
  • remove Volume, Surface, Edge, Point, SurfaceExtra constants
  • geometry types lower-cased
  • expression evaluation:
  • pass integral instances instead of integral names where applicable
  • pass Term instance to .init_data() of DataCache subclasses
  • update all affected terms and term caches
  • enable calling user functions on tangent matrix in evaluators
  • check argument names consistency in ProblemDefinition.create_evaluable()
  • implement higher order elements merge 'ori' branch:
  • new NodeDescription class
  • prepare all possible facet DOF permutations
  • update Facets to store raw orientation
  • reimplement Approximations.setup_global_base():
  • for any polynomial degrees (including extra face DOFs), no C
  • update computation of extra node coordinates, no C
  • remove obsolete/unused methods and C functions
  • prepare remap vectors and DOF indices for all DOF kinds
  • new sfepy/fem/projections.py
  • start projections between FE spaces
  • homogenization:
  • remove unused (obsolete) correctors and coefficients
  • remove 'auxiliary' coefficients
  • new sfepy/mechanics/friction.py, DualMesh class
  • problem description file:
  • allow optional arguments to define()
  • update field keywords to match Field constructor arguments
  • new ANSYS CDB file reader
  • output:
  • new FieldVariable.create_output(), simplify Variables.state_to_output()
  • update Variables.state_to_output() allow skipping variables
  • new terms:
  • dw_non_penetration (non-penetration condition term)
  • dw_surface_lcouple (acoustic term derivatives in surface directions)
  • dw_surface_llaplace (acoustic term derivatives in surface directions)
  • dq_div (new divergence in QP term)
  • scripts:
  • new friction_slip.py (work in progress)
  • compare_elastic_materials.py: new --no-plot option
  • postproc.py:
  • new --subdomains option
  • update Viewer new vector cut plane plotting mode
  • tests and examples:
  • new examples/biot/biot_npbc_lagrange.py + test
  • uses dw_non_penetration term
  • update tests/test_volume.py to report volumes
  • update examples/navier_stokes/navier_stokes.py
  • check divergence-free solution
  • new tests/test_sparse.py test compose_sparse()
  • new 'linear_elastic_up.py' example + test
  • linear elasticity, mixed formulation
  • new test_eval_matrix()
  • tests/test_meshio.py: new _compare_meshes(), test_write_read_meshes()
  • new tests/test_projections.py
  • many bug fixes

New in SfePy 2010.3 (Aug 16, 2010)

  • refactor for interactive use, making things simpler:
  • redesign term evaluation: non-assembling modes, hierarchy of calls:
  • hierarchy: ProblemDefinition.evaluate() evaluate() -
  • Equation.evaluate() Term.evaluate()
  • each level can be used by itself
  • 'eval', 'el_avg', 'qp' and 'weak' modes
  • split call_mode into (call_)mode and new term_mode
  • split evaluate() into create_evaluable() and eval_equations()
  • new Domain methods to access underlying mesh
  • refactor Field, remove Fields:
  • update Field construction (remove bases)
  • move DOF connectivity setup to fields
  • refactor construction of Variables
  • move field-specific methods into FieldVariable
  • refactor Materials, Material:
  • remove regions from Material definition:
  • a Material instance is now really just a collection of values
  • region is given by a term using the particular Material
  • split material update code into several functions
  • allow mixing special constants with parameters given by user-defined
  • function by passing mode='special_constant' to the function
  • refactor construction of Equations, Equation:
  • Equation.__init__() accepts Terms instance directly
  • make parse_definition() a regular function
  • update Equations to create and hold Variables
  • variables collected from individual terms
  • Equations now hold geometries instead of ProblemDefinition
  • remove term prefixes (namespaces) from description of equations
  • move setup of equations from ProblemDefinition to Equations
  • move mirror region handling to Region
  • move creation of ConnInfo into Term
  • move assembling to Equations (and Term)
  • refactor Terms, Term:
  • allow override of term arguments in Term.get_args()
  • new Term.new() factory constructor
  • simplified equation parser (full argument parsing now in
  • create_arg_parser())
  • support basic arithmetics
  • set term integral at time of term construction
  • new basic boundary condition classes:
  • BoundaryConditions, BoundaryCondition, EssentialBC, PeriodicBC,
  • LinearCombinationBC
  • allow Function instances in conditions
  • refactor linear combination BC
  • new LCBCOperator, RigidOperator, NoPenetrationOperator,
  • LCBCOperators, make_global_lcbc_operator()
  • refactor DofInfo into proper class (and module)
  • refactor equation mapping into EquationMap class
  • implement simplified integral specification in equations
  • the integral can either be a string representation of a non-negative
  • integer (the integral order) or 'a' (automatic order) or a string
  • beginning with 'i' (existing custom integral name)
  • integrals are created on demand
  • ConnInfo now stores directly variables instead of their names
  • update ProblemDefinition for interactive use:
  • evaluators do not hold the tangent matrix
  • split and update ProblemDefinition.time_update()
  • remove unnecessary arguments from evaluators and generic solvers
  • remove historical cruft, obsolete code
  • update all examples
  • update applications for new term evaluation:
  • schroedinger.py
  • shaper.py
  • simplify interactive construction of solvers:
  • when a non-abstract class is used, name and kind are inferred
  • automatically
  • improve tests of examples:
  • update TestInput to call hook functions and to use solve_direct()
  • simplify TestInputEvolutionary
  • check nonlinear solver stopping conditions also for evolutionary
  • problems
  • homogenization:
  • new CoefSum and CorrSum
  • new CoefEval evaluate expression (e.g. 'c.A/2 + c.B*c.C')
  • update for new evaluation code
  • simplify saving/dumping of correctors by new CorrSolution class
  • correctors stored by variables, not as the whole state vector
  • user should provide set_variables() functions for all required
  • correctors/coefficients
  • pass only the direct dependencies to coefficient and corrector mini_apps
  • mesh readers:
  • add support for 2d abaqus quad and tri elements
  • add full read and write support for comsol mesh format for sfepy
  • supported types
  • examples:
  • update examples/quantum:
  • unify 2D and 3D versions
  • remove broken DFT examples
  • new example + test (linear_elastic_tractions.py):
  • employs simplified integral definition
  • new examples/standalone/interactive/linear_elasticity.py
  • tests:
  • new tests/test_high_level.py
  • documentation:
  • improve docstrings:
  • add argument description for all terms
  • prepend term call signature(s) into term docstrings
  • new tutorial "Interactive Example: Linear Elasticity"
  • many bug fixes
  • base:
  • update Container class to be more dict-like
  • new AUTHORS file

New in SfePy 2010.2 (May 11, 2010)

  • new mesh readers:
  • MED (Salome, PythonOCC) format
  • Gambit NEU mesh format
  • UserMeshIO class:
  • creating, writing meshes by user-supplied functions
  • mechanics:
  • ElasticConstants class conversion formulas for elastic constants
  • StressTransform class to convert various stress tensors
  • basic tensor transformations
  • updated documentation:
  • new sections in developer guide
  • updated tutorial
  • many new docstrings
  • solvers:
  • semi-smooth Newton method
  • allow registering custom solvers
  • examples:
  • usage of functions to define various parameter
  • usage of probes
  • scripts:
  • simple.py: new --log, --quiet options
  • postproc.py: new --wireframe, --group-names options
  • extractor.py: new --same-dir, --to, --step options
  • split homogen.py:
  • HomogenizationApp moved to sfepy/homogenization/homogen_app.py
  • new tests:
  • test region construction
  • test quadratures using symbolic integration
  • test semi-smooth Newton solver
  • miscellaneous updates:
  • automatic order of variables
  • refactor integrals and quadratures
  • improve printing of Struct instances
  • IPython-enabled debug()
  • fixed probes in 2D
  • split Material.time_update() to allow easier setting of data
  • region selection of several nodes or elements by their ids
  • update dump_to_vtk() for stationary results (no time stepper)
  • update import_file(), load_classes() for package namespaces
  • update all terms for the new Term constructor
  • refactor dof connectivity setup, info, active dof info
  • refactor term argument checking
  • update equations and terms construction
  • update HomogenizationEngine to allow inter-coefficient dependencies
  • update term and cache table generation
  • run tests in alphabetical order
  • fix paths to meshes and other data in system-wide installation
  • new get_lattice_volume()
  • many small bug fixes
  • new terms:
  • dw_stokes_w (Stokes term weighted by scalar function)
  • dq_biot_stress (Biot stress term in QP)
  • dq_cauchy_strain (Cauchy strain term in QP)
  • dq_cauchy_stress (Cauchy stress term in QP)
  • dq_def_grad (deformation gradient term)
  • dw_lin_prestress (linear prestress term)
  • dw_surface_mass_scalar_w (weighted surface scalar mass term)
  • de_biot_stress (averaged Biot stress term)
  • di_surface_moment (surface moment term)

New in SfePy 2010.1 (Apr 7, 2010)

  • new sphinx-based documentation
  • major branches merged:
  • 'interp' branch: interpolation between different meshes
  • 'shape' branch: shape optimization in optimal flow problems
  • fast evaluation (in C) of Lagrange base functions:
  • new sfepy/fem/poly_spaces.py, tests/test_fem.py
  • new GeometryElement class:
  • tensor product geometry now in [0, 1] instead of [-1, 1]
  • remove sfepy/eldesc/*
  • clean-up of examples and meshes
  • examples:
  • perfusion in the total Lagrangian (TL) formulation
  • active fibres in the TL formulation
  • homogenization:
  • new examples:
  • linear elasticity, micro-macro coupling + test, micro-recovery
  • updated homogenization engine:
  • support for coefficients summing
  • improved saving of correctors
  • new acoustic and perfusion homogenized coefficients
  • data probing:
  • automatic refinement of probe points
  • speed-up:
  • point caching, use cKDTree for speed
  • generate_probes() can reuse problem, probes, etc.
  • new PointsProbe data probe
  • update generate_probes() for multiple probe hooks
  • postprocessing and visualization:
  • VTK source construction for any format supported by MeshIO classes
  • HDF5FileSource -> GenericFileSource
  • new GenericSequenceFileSource
  • graphical logging:
  • support logging to a text file, vertical line plot (see live_plot.py)
  • update Log and ProcessPlotter for several Log instances
  • Log class: wait until figure save is acknowledged
  • convergence log support in Newton and Oseen solvers
  • schroedinger: components of V evaluated point-wise in QPs
  • miscellaneous updates:
  • new --save-regions-as-groups option in simple.py
  • move and update functions from extractor.py into time_history.py
  • Oseen solver: leave setup of stabilization parameters to user
  • allow also 'dq', 'de' call modes in InstantaneousBase._call()
  • split termsHyperElasticity.py to base, TL and UL parts
  • utilities for work with units of physical quantities:
  • new sfepy/mechanics/units.py
  • functions to compute tensor-related quantities usual in continuum mechanics:
  • new sfepy/mechanics/tensors.py
  • many bug fixes
  • new terms:
  • d_surface (surface of a subdomain)
  • dw_volume_integrate_variable (volume integration a variable coefficient)
  • dw_diffusion_r (diffusion-like term)
  • TL formulation terms:
  • dw_tl_fib_a (hyperelastic active fibres)
  • dw_tl_bulk_pressure (hyperelastic bulk pressure)
  • dw_tl_volume (volume)
  • dw_tl_diffusion (diffusion with deformation-dependent permeability)
  • dw_tl_surface_traction (surface traction)
  • acoustic terms:
  • dw_acoustic (acoustic term)
  • d_acoustic_surface (acoustic surface term (in-plane directions))
  • d_acoustic_alpha (evaluation of acoustic term (in-plane directions))
  • dw_acoustic_integrate (integration of acoustic term (in-plane directions))
  • terms for sensitivity analysis:
  • d_sa_acoustic_alpha, d_sa_acoustic_alpha2, d_sa_acoustic_z,
  • d_sa_acoustic_z2