# created: 20.07.2007 (-1) # last revision: 20.07.2009 (+1) from 2009.2 to 2009.3 ===================== - basic support for Windows installation via numpy distutils (finally!): - installation using standard "python setup.py install"... - postproc.py: - quite usable now for fast first glance at the results - plots point, cell data of all kinds (scalar, vector, tensor) - draw iso-surface in 3D mode - fixed filename in Viewer for femhub notebook - new options: --scalar-mode, --list-names, --only-names, --rel-text-width, --no-show, --roll, --view, --all, --layout, -o - cylindergen.py: - cylindrical mesh generator - probe.py: - can probe selected quantities only - new options: --only-names, --auto-dir, --same-dir - isfepy: - new options: --no-wx, --no-viewer - phono: basic support for liquid inclusions - support for inner band gaps detection (brute force) and plotting - homogenization: added new-style piezo-elastic corrector and coefficient classes - schroedinger: fixed charge density computation - solvers: - added SciPy direct sparse solvers (ls.scipy_direct) - unified umfpack, superlu - new terms: - de_grad (element average of gradient) - d_volume_surface (compute volume using surface integral) - dw_bc_newton (Newton boundary condition) - dq_state_in_volume_qp, dq_state_in_surface_qp (interpolating state into quadrature points) - dw_surface_integrate_variable (weak surface term with variable coefficient) from 2009.1 to 2009.2: ====================== - scripts: - added probe.py - a script to probe and plot results saved in result files - data probes along geometrical objects (e.g. lines, rays) intersecting the mesh - added postproc.py - a script to visualize results saved in result files - added Viewer class - 3D plots using mayavi2 - rudimentary automatic mode only - added isfepy (interactive sfepy) IPython shell - uses new pde_solve(), pre-imports mayavi2 based Viewer - short input syntax for LCBC conditions, fields, integrals, materials and solvers - automatic html documentation generation via doxygen - new mesh readers: - Nastran (.bdf) format - Abaqus ascii (.inp) - new example problems: - subdomains.py + test - test dw_jump interface term - stabilized_navier_stokes.py input + test - test Oseen solver - acoustics.py + test - compute complex acoustic pressure - solvers: - changed API of nonlinear solvers so that scipy solvers can be used - added Broyden and Anderson nonlinear solvers (SciPy implementation) - updated Oseen solver - major rewrite of handling of dof connectivities, matrix graph and term geometries: - lots of dof connectivity related code was simplified/removed - extra connectivity data (surface, point) computed on demand in Variables.setup_dof_conns() - support for terms with traces of variables on interface regions - surface data computation for terms of volume dof_conn and Surface geometry - extended syntax of equations to allow boundary traces of variables: - to use when a field value at an interface boundary is needed from the neighbouring subdomain side and the field is not defined there - example: dw_jump.isurf.Gamma12_1( jump1.val, q1, p1, tr(p2) ) - refactored linear combination boundary conditions (LCBC) code: - fixed rigid LCBC for multi-field problems - added no penetration LCBC - major speed-up (several orders) of LCBC operator construction - assembled via the coo_matrix instead of the lil_matrix - fixed check_tangent_matrix() for LCBC - applications: - homogenization: - prefactorize the matrix for linear corrector problems - major speed-up - phononic materials: - plot also middle eigenvalues in 3D, fixed plot labels, polarization angles - caching of eigenvalue problem solution and Christoffel acoustic tensor - schroedinger.py: - choose and call DFT solver via solver interface - general: - fixed boundary quadrature points for multi-field problems - fixed complex assembling - fixed live plotting (ProcessPlotter) for multi-core machines - improved Output class, simplified its usage - Struct.__str__() prints in alphabetical order - unified version information by introducing sfepy.__version__ - polished MeshIO class - implemented region selection by node groups - refactored Mesh nodes, lots of simplifications - many small fixes and updates - new terms: - dw_jump (scalar interface jump term) - dw_surface_mass_scalar (scalar mass on a surface boundary) from 2008.4 to 2009.1: ====================== - new solvers: - simple backtracking steepest descent optimization solver - PETSc Krylov solvers via petsc4py, sequential mode - LOBPCG eigenvalue solver (SciPy implementation) - new mesh readers: - mesh3d (hermes3d) - AVS UCD ascii mesh - Hypermesh ascii mesh - homogenization: - MiniAppBase base class for "mini-applications": micro-problem correctors, homogenized coefficients - unified approach to resolve data dependencies: HomogenizationEngine class - applications: - phononic materials: - dispersion analysis, phase velocity computation for phononic materials - homogenized coefficients computed via the HomogenizationEngine - caching of coefficients to speed up parametric runs - schroedinger.py: - all functionality moved into SchroedingerApp class - inherits from SimpleApp -> can be parametrized - fixed DFT iterations, iteration plot saving - basic smearing around Fermi limit - scripts: - convert_mesh.py: - --scale option, support different scaling for each axis - general: - terms, caches now imported dynamically by load_classes() - to add a new term/cache module just put it into sfepy/terms/ - better setup of Application options - automatic option update in parametric studies - default configuration options for the linear, nonlinear and eigen- solvers - various 64bit fixes - allow empty output prefix, combined output to file and terminal - new terms: - dw_electric_source (electric source term) from 00.50.00 to 2008.4: ======================== - framework for running parametric studies - allow time derivatives of variables as term arguments - example (transient diffusion): """dw_mass_scalar.i1.Omega( s, dT/dt ) + dw_laplace.i1.Omega( coef.val, s, T ) = 0""" - initial conditions via ics, ic_ keywords - enhanced acoustic band gaps code - dispersion analysis (polarization angle calculation) - applied load tensor computation - phase velocity computation for periodic perforated media with empty holes - term base classes - actual term code reduced significantly - adding new terms is even easier now - type of term arguments determined fully at run-time - many terms were unified - the same term can be used both for the finite element assembling and the evaluation of the weak form for known fields (dw_ = d_) - live plotting using multiprocessing module - assumes GTKAgg matplotlib backend - support for setting x axis values and labels and y labels - figure saving - printing messages: Output class - homogenized coefficients classes prototypes - improved schroedinger.py - plotting DFT iterations - created sfepy/mechanics - conversions of elastic constants and transformations to plane - float format used for saving results can be set by the 'float_format' option - new terms: - dw_piezo_coupling (piezo-electric coupling term) - dw_biot (Biot coupling term, former dw_biot_div, dw_biot_grad, ...) - dw_stokes (Stokes coupling term, former dw_div, dw_grad, ...) - dw_lin_elastic_th (linear elasticity fading memory, former dw_lin_viscous_th) - dw_biot_th (Biot fading memory terms unified) from 00.46.02 to 00.50.00: ========================== - finite strain elasticity: neo-Hookean, Mooney-Rivlin materials - total Lagrangian (TL) formulation - geometric data via finite_strain_tl DataCache - solving problems in complex numbers - generalized equations to allow linear combination of terms - example: """2 * aterm.i1.Omega( v, u ) = - 3.0 * bterm.i1.Omega2( v, u )""" - run-time type of state term arguments - removed all *_r terms, now useless - 'elements by function( domain )' region selector - refactoring to follow Python coding style guidelines - history support in variables - MeshIO.read_dimension() to quickly get dimension in an input file - improved site_cfg_template.py - improved schroedinger.py - new terms: - de_average_variable (average a variable in elements) - dw_surface_integrate (integrate over surface operator) - dw_tl_bulk_penalty (bulk penalty in TL formulation) - dw_tl_he_neohook (neo-Hooekan term in TL formulation) - dw_tl_he_mooney_rivlin (Mooney-Rivlin term in TL formulation) from 00.41.03 to 00.46.02: ========================== - alternative short syntax for specifying essential boundary conditions, variables and regions - saving results per variable (useful when variables defined in different subdomains) - manufactured solutions tests: - SymPy support - new eigenvalue solvers: - removed symeig dependence - linear solvers based on PyAMG - simple block mesh generator - unified HDF5 mesh/solution reading/writing - site configuration now via script/config.py + site_cfg.py - example: computing homogenized elastic coefficients - new terms and lots of reorganization: - Biot terms - some fading memory terms from 00.35.01 to 00.41.03: ========================== - works on 64 bits - support for various mesh formats: - medit: .mesh - text VTK: .vtk - tetgen: .node + .ele - comsol: .txt - Schroedinger equation solver - run via 'schroedinger.py' - input files: - new syntax for variables and boundary conditions - improved handling of degrees of freedom - more descriptive (and less) test and simulation messages - new handling of approximations (-> lots of thing simplified) - material parameters can be defined in mesh vertices - simple.py: allow user-specified postProcessHook function - documentation generation via prettydoc - new solvers: - generic time-dependent problem solver - pysparse, symeig, scipy-based eigenproblem solvers - scipy-based iterative solvers - new terms: - dw_volume_integrate (volume integral operator) - dw_mass_scalar_r (rhs for time-dependent Poisson problem) - di_volume_integrate_mat (integrate material parameters) - dw_volume_wdot and related terms (weighted dot product) - dw_mass_scalar_variable (scalar mass term with variable coefficients) - dw_lin_elastic and related terms (anisotropic linear elasticity) - dw_lin_viscous (linear viscosity) - de_cauchy_stress (element-averaged Cauchy stress) from 00.31.06 to 00.35.01: ========================== - per term integration, major rewrite of sfe.fem and related: - term.integral.domain( arguments ) syntax - 'integral_*' keyword for input files - each term can use its own quadrature points - 'field' keyword syntax changed - minor: - genDocs.py: PDF term documentation generator from 00.26.01 to 00.31.06: ========================== - acoustic band gaps determination: - zones of frequencies where elastic waves do not propagate - based on homogenization of material made of small inclusions periodically embedded in an elastic matrix - run via 'eigen.py' - general linear combination boundary conditions - 'lcbc' keyword: - rigid body motion constraint imposed on regions - new Solver classes, solver reorganization: - all solvers now configured in a uniform way ('solver_[0-9]+' keywords) - specify solvers using 'options' keyword - new terms: - dot product in a volume or on a surface region - vector field mass term - scalar field "mass", fine-coarse scalar "mass" terms: - used for coarse mesh -> fine mesh interpolation of scalar fields - minor: - added updated findSurf.py into distribution - extract surface from a mesh - script/kill_* - script/writeMesh2D.m - script/writeSparseMatrixHDF5.m from 00.22.02 to 00.26.01: ========================== - testing framework (in the spirit of unit tests): - particularly tests that standard input files work - runTests.py: output filtering - linear spring term (kind of a relaxed Dirichlet BC on node displacements) - volume term - Laplace term in 2D - chained periodic boundary conditions resolving - new options for simple.py: --save-field-meshes, --solve-not - periodic mesh merger (genPerMesh.py) - minor: - improved region saving - growing term data cache - sparse matrix saving into HDF5 - point dof connectivity and geometry - region handling improvements (canCells flag) - nonlinear solver status reporting - distribution: test and example meshes included in the release tarball