FreeFem Sources Versions Save

FreeFEM source code

v4.6

4 years ago

Warning: this is an automatic release. If you encounter some trouble with packages, post a message in the forum.

Added

  • new function hasType to know if a PETSc component has been installed, e.g., hasType("PC", "hypre")
  • eigenvalue problems on linear elements, cf. examples/eigen/LapEigen1DBeltrami.edp or examples/hpddm/laplace-beltrami-3d-line-SLEPc.edp
  • --download-cmake in PETSc configure if there is no CMake available
  • flags --with-[slepc|slepccomplex]-include and --with-[slepc|slepccomplex]-ldflags for when SLEPc has been built outside of FreeFEM or PETSc
  • interface to KSPSetResidualHistory and KSPGetIterationNumber
  • interface to mpiWaitAll
  • new function extract, allows to build a curve mesh from a 2d mesh (can extract a labeled boundary, apply a geometric transformation)
  • ffglut can plot a vectorial FE function in surface 3d
  • distributed ParMmg interface, cf. examples/hpddm/distributed-parmmg.edp or examples/hpddm/laplace-adapt-dist-3d-PETSc.edp
  • new parallel interpolator on non-matching meshes, cf. examples/hpddm/transfer.edp
  • ability to solve problems in single precision or with 64 bit integers

Changed

  • new tgv values: -10 => zero row, -20 => zero row/column
  • Windows binary now shipped with PETSc/SLEPc
  • BEM examples are now in examples/mpi
  • plot border type is now in 3d (border 2d and 3d)
  • PETSc version 3.13.0

Deprecated

Fixed

  • --enable-download_package may now be used to download a single package, e.g., --enable-download_metis
  • compilation of PETSc under Windows
  • compilation of plugins when using static libraries
  • correct detection problem in FE type when use a vectorial FE
  • macro concatenation with spaces in arguments

v4.5

4 years ago

Added

  • new mmg and parmmg (parallel mmg) plugins interfacing mmg5 and parmmg libraries, to replace mmg3d-v4.0 and freeyams (Thanks to P-H Tournier)
  • a true 3d anisotropic mesh adaptation examples/3d/Laplace-Adapt-aniso-3d.edp
  • an example to extract surface mesh from isovalue in examples/3dSurf/Pinochio.edp
  • function f.eatspace to reach eof on istream file which return false in case of EOF.
  • function f.length to get the istream file length
  • Interface to PetscLogStagePush()/PetscLogStagePop()
  • Ability to directly assemble a Mat using a varf
  • New bem plugin for the Boundary Element Method (using htool and BemTool libraries)
  • New DSL for BEM (varfbem see examples/bem)
  • add int0d to apply Neumann BC (curve FE), differential operators (dx,dy,...), compute an 1d integral
  • add P1dc FE for Border FEM (possible to define a new FE with plugin)
  • PETSc as a subdomain solver for HPDDM

Changed

  • correct ffglut (bug in case of changing number of nb isovalue)
  • PETSc version 3.12.4
  • Change the point search triangle algorithm to be sure in any case (in test)
  • Sline operator renamed to segment
  • In square3, segment, movemesh functions: geometry transformation can now be [X] or [X,Y] or [X,Y,Z] according to the minimal shape element dim
  • PETSc now download OpenBLAS if there is no BLAS found by FreeFEM configure

Deprecated

  • freeyams plugin
  • mmg3d-v4.0 plugin

Fixed

  • fix plot for curve mesh

v4.4-3

4 years ago

Added

  • Preliminary support for symmetric distributed PETSc matrices (MATMPISBAIJ instead of MATMPIAIJ)
  • Interface to AMS, Hiptmair--Xu preconditioner for problems in H(curl), see maxwell-3d-PETSc.edp
  • FEM on curve 3D (in test)
  • P0, P1, P2 curve 3D FE (scalar for the moment)
  • i/o medit and vtk format for curve FE
  • checkMesh() function, allow to remove multiple vertices, elements and border elements (argument: precisvertice(double),removeduplicate(bool))
  • possible to build a curve mesh from a surface, ThS = buildBdMesh(ThS) and define this new mesh by meshL ThL= ThS.Gamma
  • can extract a border part of a meshL (meshL ThL = extract(ThL,label=llabs))
  • Support for optimized boundary conditions with PETSc, see helmholtz-2d-PETSc-complex.edp
  • buildmeshL() function: build meshL from borders
  • mpiCommSelf keyword
  • Nt variable defines the normal to the surface ( in case meshS but set to 0 in line mesh )
  • correct eigen values to get eigen vectors for border finite element spaces (surface and line)
  • add examples for border FEM

Changed

  • function buildSurface(...) renamed by buildBdMesh(...)
  • line3(...) renamed by SLine(...)

Removed

  • FFTW is not compiled by PETSc anymore
  • Spurious outputs in TetGen plugin
  • curve3 type -> border
  • hypre examples since it is not downloaded by FreeFEM for many months (use PETSc instead)
  • dscalprod routine from HPDDM and PETSc plugins, use A(u, v) with A a Mat or a schwarz object
  • export function for macro_ddm.idp, use savevtk as in the sequential iovtk plugin

Fixed

  • plotMPI function for plotting 3D solutions, problem with serialize
  • variable mes in clean_mesh function
  • correct bug verflow in plugin iohdf5
  • correct problem with buffer iostrean function (buffer must be out of range )
  • correct i/o vtk and by defaut write at binary format
  • fix an overflow in RT13d FE
  • problem with auto-build of border mesh

v4.4.2

4 years ago

Warning: this is an automatic release. If you encounter some trouble with packages, post a message in the forum

Added

  • add matrix and array tools (FH)
     matrix A=eye(10);
    real[int,int] af = eye(10,10);
     real[int,int] a(10,10);
     int[int] I=[1,3,6];
     real[int] d = a.diag ; // get the diag of full matrix (no copy)
    real[int] dI= d(I); // init a array from renumbering array
     real[int] c= a(:,1)(I); // init a array from renumbering array
     real[int] aa= a.asarray; //  view full the matrice  as an array (no copy)
    a(2:5,3:7).diag= 200;
    a.diag += 100;
    
  • adding of a global variable lockOrientation to allows the building of mesh without checking the orientation elements (AF)
  • add plugin tool to build matrix edge/P1 with sign mat_edgeP1 (FH)
  • new examples diffusion-2d-mg.edp and helmholtz-2d-mg.edp showing how to use user-defined coarse corrections
  • support for nonzero scalars in PETSc block matrices
  • simpler constructor for sequential HPDDM matrices (no need for the restriction array and the partition of unity)
  • array of Mat and schwarz types
  • add mpi meshS (serialize object)

Changed

  • correct mistake in mpirank in case of broadcast with comm (thank tp PHT)
  • update fftw to v3.3.8 and openblas v0.3.6
  • in movemesh23 correct the argument label -> region to change label
  • new implementation for the moving mesh functions, new arguments: boolean cleanmesh, removemultiple, rebuildborder
  • new PETSc version 3.12
  • templatize movemesh, setMesh functions
  • add conditional tests in make check

Fixed

  • spurious output in PARDISO
  • fix problem in ffglut (AF)
  • detect hdf5 and gsl if no enable-download

Docker

v4.4

4 years ago

Warning: this is an automatic release. If you encounter some trouble with packages, post a message in the forum

Added

  • interface to TSSolve, DAE/ODE solvers from PETSc
  • interface to TaoSolve, Toolkit for Advance Optimization from PETSc
  • simpler constructor for sequential PETSc matrices (no need for the restriction array and the partition of unity)
  • some unit tests

Changed

  • PETSc version 3.11.3
  • replaced custom implementations (RNM::real, RNM::norm2, and Fem2D::norm) by C++11 functions
  • API of the macro plotMPI
  • switched to inexact coarse operators in HPDDM by default
  • RHS and solution vectors permuted in IterativeMethod and DDM
  • .mesh are now saved using version 2 (which stores floating-point scalars in double precision)

Removed

  • legacy linear solver interfaces using the old matrix type
  • dot products using CBLAS because of errors at link time
  • Newtow function (bad name)

Fixed

  • assertion failure with some 3D meshes when doing trunc(Th, true) (thanks to F. Feppon)
  • compile error when plotting arrays of vectorial functions

v4.2.1

4 years ago

Warning: this is an automatic release. If you encounter some trouble, please post a message on the forum

Added

  • nested fieldsplit example examples/hpddm/natural-convection-2d-PETSc-fieldsplit.edp
  • int[int][int] array; is now supported (a size was previously needed, i.e., array(0);)
  • check selectivity during make check, depending on available 3rd party librairies
  • new CI/CD tools for develop branch
  • new gestion of mesh3 - meshS coupling
  • square3, buildSurface, ... operators for meshS

Changed

  • SLEPc is now directly downloaded by PETSc with --download-slepc
  • HPDDM and PETSc API have been simplified, instead of an int[int] and an int[int][int], only a single int[int][int] is now needed
  • build macros for HPDDM and PETSc have been simplified to follow the above API change, two parameters have been permuted as well to match the HPDDM and PETSc constructors
  • PETSc version 3.11.2 and HPDDM with multilevel GenEO

Removed

  • old interfaces that were not maintained anymore (pARMS, PaStiX, hips) and that are available through PETSc
  • spurious outputs when destroying some meshes
  • old surface msh3 type, replaced by meshS

Fixed

  • multiple segmentation faults when using unitialized values (thanks to G. Sadaka)
  • nested fieldsplits in the PETSc interface
  • memory leaks in SNESSolve (nonlinear PETSc solvers)
  • bug fix of Cofactor function
  • various bug fixes on surface mesh

v4.1

5 years ago

4.1

Fixed

  • missing conj operation is some hermitian operation on complex sparse matrix like A+cB', AB' thanks to P-H Tournier
  • writing CheckAllEdp to be compatible with new tree
  • fix eps in trunc in case of very anisotrope mesh, Thank G. Sadaka

Added

Changed

  • PETSc/SLEPc version 3.11.1

v4.0

5 years ago
  • correct bug in RT1Ortho and RT2Ortho 2d in the computation of derivative (2018-01-30, Thank to [email protected])
  • uniformize 2d/3d in element, methode EdgeOrientation(e) now return +1/-1
  • change all the sparse matrix structure
  • remove all map matrix jan 2019
  • surface finite element (in progress)
  • nElementonB (version 2d and 3d of nTonEge)
  • area ( same the lenEdge) in 3d
  • add function labels to get the array of label of a mesh
  • add function regions to get the array of label of a mesh
  • correct big bug in toRarray,toZarray, toCarray transform [ ... ] array to int[int], real[int], complex[int]

v4-beta

5 years ago

First version of the v4 pre compile version (now development branch https://github.com/FreeFem/FreeFem-sources/commit/4b1a1a0ef720543cfb7f6bdd3390d94775ac9a40 ) in test.

on Mac version El Capitain (10.11.6) or better http://www3.freefem.org/ff++/ftp/FreeFem++-4.0-MacOS_10.11.pkg ( 387.5 Mb, Jan 18, 2019 17:36:05.)

win64: http://www3.freefem.org/ff++/ftp/FreeFem++-win64-4.0-beta.exe ( 3.2 Mb, Jan 18, 2019 17:41:08.)

Source version: http://www3.freefem.org/ff++/ftp/freefem++-4.0-beta.tar.gz

3.62

5 years ago

Added

  • add x0=true/false, add veps=eps in solver parameters to initiaze of not the the CG , GMRES algo with 0 or previous value and veps is to get the absolue tolerance

  • A tool of solve adjoint matrix A with only one single LU decomposition with LU, UMFPACK, GMRES
    u[]=A'^-1*b;

  • Add plugin to save matrix in Harwell-Boeing format (see Harwell-Boeing format)

Fixed

  • Fix bug in trunc (2d) in case of very fine mesh (eps too small)