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