Skip to content

Commit 21f13fd

Browse files
authored
Merge pull request #35 from FreeFem/dev
Dev
2 parents 0dbabff + 7c815d0 commit 21f13fd

File tree

5 files changed

+317
-49
lines changed

5 files changed

+317
-49
lines changed

source/introduction/index.rst

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
<center>
1616
<t> FreeFEM </t> <br/>
17-
Fourth edition, Version 4.8 </t>
17+
Fourth edition, Version 4.11 </t>
1818
</center>
1919

2020
===============
@@ -77,7 +77,7 @@ Problems involving partial differential equations from several branches of physi
7777
* `ARPACK <https://www.caam.rice.edu/software/ARPACK/>`_
7878
* `BLAS <http://www.netlib.org/blas/>`_
7979
* `OpenBLAS <http://www.openblas.net/>`_
80-
* `FFTW 3.3.2 <http://www.fftw.org>`_
80+
* `FFTW 3.3.8 <http://www.fftw.org>`_
8181
* `Ipopt 3.12.4 <https://github.com/coin-or/Ipopt>`_
8282
* `Gmm++ 4.2 <http://getfem.org/gmm.html>`_
8383
* `freeYams <https://www.ljll.math.upmc.fr/frey/software.html>`_
@@ -93,7 +93,6 @@ Problems involving partial differential equations from several branches of physi
9393
* `SuperLU <http://crd-legacy.lbl.gov/~xiaoye/SuperLU/>`_
9494
* `TetGen <http://www.tetgen.org/>`_
9595
* `PETSc <https://www.mcs.anl.gov/petsc/>`_
96-
* `SLEPc <https://slepc.upv.es/>`_
9796
* `HTool <https://pierremarchand.netlify.com/project/htool/>`_
9897
* `HPDDM <https://github.com/hpddm/hpddm>`_
9998
* `BemTool <https://github.com/PierreMarchand20/BemTool>`_

source/introduction/installation.rst

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ Compilation on OSX (>=10.13)
177177
.. code-block:: bash
178178
:linenos:
179179
180-
brew cask install gfortran
180+
brew --cask install gfortran
181181
182182
.. note:: If you have installed gcc via brew, gfortran comes with it and you do not need this line
183183

@@ -191,25 +191,25 @@ Compilation on OSX (>=10.13)
191191
tar xf openmpi-4.0.1
192192
cd openmpi-4.0.1/
193193
# to install mpich
194-
curl -L http://www.mpich.org/static/downloads/3.3.2/mpich-3.3.2.tar.gz --output mpich-3.3.2.tar.gz
195-
tar xf mpich-3.3.2
196-
cd mpich-3.3.2
194+
curl -L https://www.mpich.org/static/downloads/4.0.2/mpich-4.0.2.tar.gz --output mpich-4.0.2.tar.gz
195+
tar xf mpich-4.0.2.tar.gz
196+
cd mpich-4.0.2
197197
198198
.. code-block:: bash
199199
:lineno-start: 4
200200
201201
# with brew gcc gfortran compilers
202-
./configure CC=clang CXX=clang++ FC=gfortran-9 F77=gfortran-9 --prefix=/where/you/want/to/have/files/installed
202+
FFLAGS=-fallow-argument-mismatch FCFLAGS=-fallow-argument-mismatch ./configure CC=clang CXX=clang++ FC=gfortran-11 F77=gfortran-11 --prefix=/where/you/want/to/have/files/installed
203203
204204
# with LLVM gcc and brew gfortran compilers
205-
./configure CC=gcc-9 CXX=g++-9 FC=gfortran-9 F77=gfortran-9 --prefix=/where/you/want/to/have/files/installed
205+
FFLAGS=-fallow-argument-mismatch FCFLAGS=-fallow-argument-mismatch ./configure CC=gcc-11 CXX=g++-11 FC=gfortran-11 F77=gfortran-11 --prefix=/where/you/want/to/have/files/installed
206206
207207
208208
.. code-block:: bash
209209
:lineno-start: 5
210210
211211
make -j<nbProcs>
212-
make -j<nbProcs> install
212+
make install
213213
214214
4. Install the minimal libraries for **FreeFEM**
215215

@@ -237,12 +237,12 @@ Compilation on OSX (>=10.13)
237237
.. code-block:: bash
238238
:linenos:
239239
240-
curl -O http://mirror.cyberbits.eu/gnu/gsl/gsl-2.5.tar.gz
241-
tar zxvf gsl-2.5.tar.gz
242-
cd gsl-2.5
240+
curl -O https://mirror.ibcp.fr/pub/gnu/gsl/gsl-2.7.tar.gz
241+
tar zxvf gsl-2.7.tar.gz
242+
cd gsl-2.7
243243
./configure
244244
make -j<nbProcs>
245-
make -j<nbProcs> install --prefix=/where/you/want/to/have/files/installed
245+
make install --prefix=/where/you/want/to/have/files/installed
246246
247247
8. Download the latest Git for Mac installer `git <https://git-scm.com/download/mac>`__ and the **FreeFEM** source from the repository
248248

@@ -266,14 +266,12 @@ Compilation on OSX (>=10.13)
266266
:lineno-start: 3
267267
268268
// with brew gcc gfortran compilers
269-
./configure --enable-download CC=clang CXX=clang++ F77=gfortran-9
270-
FC=gfortran-9 --prefix=/where/you/want/to/have/files/installed
269+
./configure --enable-download -enable-optim CC=clang CXX=clang++ F77=gfortran-11
270+
FC=gfortran-11 --prefix=/where/you/want/to/have/files/installed
271271

272272
// with LLVM gcc and brew gfortran compilers
273-
./configure --enable-download CC=clang CXX=clang++ F77=gfortran-9
274-
FC=gfortran-9 --prefix=/where/you/want/to/have/files/installed
275-
276-
273+
./configure --enable-download -enable-optim CC=gcc CXX=g++ F77=gfortran-11
274+
FC=gfortran-11 --prefix=/where/you/want/to/have/files/installed
277275

278276
10. Download the 3rd party packages to use FreeFEM plugins
279277

source/introduction/new-features.rst

Lines changed: 265 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,268 @@ Boundary Element Method
6363

6464
Allows to define and solve a 2d/3d BEM formulation and rebuild the associated potential.
6565
The document is in construction.
66+
67+
Version 4.6: new features
68+
=========================
69+
70+
* Added
71+
- new search algorithm for the element containing a point (more safe) in mesh of type mesh3, meshS, or meshL.
72+
- new function `hasType` to know if a PETSc component has been installed, e.g., `hasType("PC", "hypre")`
73+
- eigenvalue problems on linear elements, cf. `examples/eigen/LapEigen1DBeltrami.edp` or `examples/hpddm/laplace-beltrami-3d-line-SLEPc.edp`
74+
- `--download-cmake` in PETSc configure if there is no CMake available
75+
- flags `--with-[slepc|slepccomplex]-include` and `--with-[slepc|slepccomplex]-ldflags` for when SLEPc has been built outside of FreeFEM or PETSc
76+
- interface to `KSPSetResidualHistory` and `KSPGetIterationNumber`
77+
- interface to `mpiWaitAll`
78+
- new function extract, allows to build a curve mesh from a 2d mesh (can extract a labeled boundary, apply a geometric transformation)
79+
- ffglut can plot a vectorial FE function in surface 3d
80+
- distributed ParMmg interface, cf. `examples/hpddm/distributed-parmmg.edp` or `examples/hpddm/laplace-adapt-dist-3d-PETSc.edp`
81+
- new parallel interpolator on non-matching meshes, cf. `examples/hpddm/transfer.edp`
82+
- ability to solve problems in single precision or with 64 bit integers
83+
- tool to read data form vtk file only in 3d (cf. plugin iovtk a first example `examples/plugin/iovtk.edp`)
84+
- tool to read/wrile ply file of meshL, mesh3, MeshS : Polygon File Format / Stanford Triangle Format do `load "ioply"`
85+
see `examples//3dSurf/operatorsOnMeshS.edp`
86+
87+
* Changed
88+
- new `tgv` values: -10 => zero row, -20 => zero row/column
89+
- Windows binary now shipped with PETSc/SLEPc
90+
- BEM examples are now in `examples/mpi`
91+
- plot border type is now in 3d (border 2d and 3d)
92+
- PETSc version 3.13.0
93+
94+
* Fixed
95+
- `--enable-download_package` may now be used to download a single package, e.g., `--enable-download_metis`
96+
- compilation of PETSc under Windows
97+
- compilation of plugins when using static libraries
98+
- correct detection problem in FE type when use a vectorial FE
99+
- macro concatenation with spaces in arguments
100+
- correct bug in `plugin/seq/Schur-Complement.cpp`
101+
- correct ambiguity bug in `plugin/seq/bfstream.cpp` (reading real or integer)
102+
- compilation of plugin libff-mmap-semaphore.c under windows
103+
104+
Version 4.7: new features
105+
=========================
106+
107+
* Added
108+
109+
- new way to build matrix between 2d Finite element 2d and Curve finite element to do mortar (Thank to Axel ) , see first example `examples/tutorial/mortar-DN-4-v4.5.edp`
110+
- add `Ns` normal vector in R^3 on meshS (normal of the surface) of current point (to day Ns of [x,y,0] plan is [0,0,-1]) no be compatible to exterior normal.
111+
- add `Tl` tangent vector in R^3 on meshL (tangent vector of the line/curve) of current point
112+
- compile ffmaster / ffslave example under windows (thanks to johann@ifado.de)
113+
- Boolean parameter `spiltpbedge` in `buildmesh` to split in to edge with two boundary vertices
114+
- interface to PETSc DMPlex, see `examples/hpddm/DMPlex-PETSc.edp`
115+
- function `MatDestroy`
116+
- function `MatPtAP` and `transferMat` for parallel interpolation between non-matching grids, see `examples/hpddm/PtAP-2d-PETSc.edp` or `examples/hpddm/diffusion-mg-2d-PETSc.edp`
117+
- preliminary interface to `SVDSolve` from SLEPc to compute singular value decompositions, see `examples/hpddm/mf-2d-SLEPc.edp` or `examples/hpddm/helmholtz-2d-SLEPc-complex.edp`
118+
- preliminary interface to `NEPSolve` from SLEPc to solve nonlinear eigenvalue problems, see `examples/hpddm/nonlinear-2d-SLEPc-complex.edp`
119+
- `transpose` parameter when constructing a `Mat` for defining a matrix-free transposed operation
120+
- interface to `PetscMemoryGetCurrentUsage`
121+
- add P2b, RT0, RT1 surface FE (P2bS, RT0S, RT1S))
122+
- add operator interpolate (2d->3d surface)
123+
- add operator x = A'\*b; where x, b are array and A 2 dim array (full matrix) and generate an error in case of b'\*A or b'\*A expression
124+
- function `MatLoad` to load a PETSc `Mat` from disk, see `examples/hpddm/MatLoad-PETSc.edp`
125+
- possibility to assemble a symmetric `HMatrix<complex>` and to densify a `HMatrix<complex>` into a `Mat<complex>`
126+
127+
* Changed
128+
- moved Htool to its new GitHub location
129+
- ScaLAPACK and MUMPS are not compiled by PETSc anymore if there is no Fortran compiler
130+
- MPICH is compiled by PETSc if no MPI is detected during configure, see https://community.freefem.org/t/feature-request-use-download-mpich-on-ubuntu/407
131+
- PETSc version 3.13.5
132+
- force `--with-cudac=0` in `make petsc-slepc`, see https://github.com/FreeFem/FreeFem-sources/issues/141
133+
- change DSL keyword P1dc3dL->P1dcL and P1dc3dS->P1dcS
134+
- rename `view`, `hasType`, `changeSchur` to respectively `ObjectView`, `HasType`, and `ChangeSchur`
135+
136+
* Deprecated
137+
- rename `changeNumbering`, `globalNumbering`, `originalNumbering`, `changeOperator`, `destroyRecycling`, and `attachCoarseOperator` to respectively `ChangeNumbering`, `GlobalNumbering`, `OriginalNumbering`, `ChangeOperator`, `DestroyRecycling`, and `AttachCoarseOperator`
138+
- `Nt` the normal vector of the current (wrong on meshL) use `Ns` or `Tl`
139+
* Removed
140+
- `augmentation` routine from the PETSc plugin
141+
- `MPIF77` variable
142+
143+
* Fixed
144+
- lot of mistake in MeshL element add a example o check lot of thing `tutomesh1d.edp`
145+
- fixed problem of change of mesh when rebuild 2d mesh with buildmesh, .... (Thank to P. Jovilet to points this problem)
146+
- missing METIS library when using SuiteSparse compiled by PETSc
147+
- missing `-fno-stack-protector` when building PETSc on Windows, see https://community.freefem.org/t/error-loading-complex-petsc-slepc-library/370
148+
- fixed ffglut for the plotting of FE array solution
149+
- fixed ffglut bug on MacOS Catalina , draw inn only half windows screen (Apple Bug ???)
150+
- correct P0VF finite element
151+
- `abs` function of array
152+
153+
Version [4.7-1]: new features
154+
=========================
155+
156+
* Changed
157+
- change the language definition to use type as a construction function with named arguments for bem plugin
158+
- PETSc version 3.14.0
159+
- ARPACK compiled by SLEPc
160+
- Mmg version 5.5.0
161+
- -std=c++14 instead of -std=c++11 when possible
162+
163+
* Removed
164+
- plugins thresholdings, symmetrizeCSR, and fflapack and associed example
165+
166+
* Fixed
167+
- problem compilation with gfortran-10 of arpack and mumps (add -fallow-argument-mismatch flags)
168+
169+
170+
Version 4.8: new features
171+
=========================
172+
173+
* Added
174+
- Bilaplacian example using Morley FE with PETSc, see `examples/hpddm/bilaplacian-2d-PETSc.edp`
175+
- Oseen problem preconditioned by PCD, see `examples/hpddm/oseen-2d-PETSc.edp`
176+
- SLEPc polynomial eigenvalue solver `PEPSolve()`
177+
- add trivial example to check periodic boundary condition on meshS , meshL , mesh3
178+
examples/3d/periodic3.edp examples/3dSurf/periodicS.edp
179+
examples/3dCurve/periodicL.edp
180+
181+
* Changed
182+
- PETSc version 3.14.2
183+
- Mmg version 5.5.2
184+
- link of ffglut so change in configure.ac and Makefile.am LIBS -> FF_LIBS and LIBS become empty
185+
to remove default libs
186+
- change number of save plot in ffglut from 10 to 20 for O. Pironneau
187+
188+
* Fixed
189+
- some memory leaks
190+
- the periodic boundary condition have wrong before first a sementic level of MeshS and MeshL case.
191+
the new syntexe is for example:
192+
meshL Tl=segment(10); fespace Vl(Tl,P1,periodic=[[1],[2]]);
193+
meshS Th=square3(10,10,[x*2*pi,y*2*pi]); fespace Vh2(Th,P1,periodic=[[1,x],[3,x],[2,y],[4,y]]);
194+
- fixed '*' keyboard trick, to keep the viewpoint in ffglut or not.
195+
196+
Version 4.9: new features
197+
=========================
198+
199+
* Added
200+
- add P3 lagrange finite element on meshS and meshS
201+
- add new plugin `meshtool`to add tool to compute the number of connected components of a all kind of mesh
202+
(mesh,mesh3,meshS,meshL) with 2 kind of connected components ones on interior part of the mesh (default) ans
203+
secondly on the closure of the mesh (see `examples/hpddm/bConnectedComponents.edp` )
204+
add functions int[int] In=iminP1K(Th,u) or int[int] Ix=imaxP1K(Th,u) get the array min/max of value u[i]
205+
where i is vertex number on each element k, so we have u[Im[k]] = min u[i]/ i in k;
206+
- add in plugin `bfstream` to to read binary int (4 bytes) to read fortran file and try to pull tools to share the endiannes
207+
in progress
208+
- add gluemesh of array of MeshL and MeshS type
209+
- interface to `PC_MG_GALERKIN_BOTH`
210+
- Kronecker product of two sparse matrices `matrix C = kron(A, B)`
211+
- add lot of finite element on Mesh3, MeshS, MeshL of Discontinous Galerling Element
212+
in 3d : P1dc3d, P2dc3d, P3dc3d, P4dc3d , P0edge3d ,P0edgedc3d , P0face3d ,P0facedc3d , P0VF3d ,P0VFdc3d ,
213+
on Surface : P1dcS, P2dcS, P3dcS, P4dcS , P0edgeS ,P0edgedcS , P0VFS ,P0VFdcS,
214+
on Curve : P1dcL, P2dcL, P3dcL, P4dcL , P0VFL ,P0VFdcL
215+
remark; the associated generic name existe of P1dc, P2dc, P0edge, P0VF and all dc finite element corresponding to
216+
no continuity across element.
217+
- add code of intallfaces to do Discontinous Galerkin formulation in 3d (in test FH.)
218+
- add dist function to a mesh , meshL, MeshS or mesh3
219+
- signeddistfunction to a meshL or meshS
220+
- add buildmesh functon to build a 2d mesh from a meshL (same as buildmesh see examples/3dCurve/border.edp)
221+
222+
* Changed
223+
- Now the order to find MPI in configure is first if you have PETSC then take MPI from PETSc
224+
otherwise use previous method
225+
- on MeshL defined with buildmeshL now the default label are 2*k-1 (resp. 2*k) for the begin (resp. end) of curve
226+
where k is the order of curve use in buildmeshL. So if you have one curve the labels are 1 and 2.
227+
And new the element label are te region number not the label.
228+
This element are not really test so be carfull.
229+
- PETSc 3.15.0
230+
231+
232+
* Fixed
233+
- bug in Find triangle contening point in 2d (border case),
234+
`int Mesh::DataFindBoundary::Find(R2 PP,R *l,int & outside) const`
235+
the parameter l not correclty return due to local variable.
236+
- set CFLAGS=-Wno-implicit-function-declaration to complie with Apple clang version 12.0.0 (clang-1200.0.32.29)
237+
to remove following error: implicit declaration of function
238+
correct `3dCurve/basicGlue.edp`and add missing test
239+
- bugs in SLEPc `SVDSolve()` with a rectangular `Mat`
240+
- bugs in nElementonB for DG 3d formulation.
241+
242+
Version 4.10: new features
243+
=========================
244+
245+
* Added
246+
- ridgeangle named parameter in ExtractMeshL in msh3 plugin
247+
- DG formulation in 1d :
248+
add integral of all border of element : `intallBE(ThL)` and unified the notation by adding
249+
`intallBE(ThS)` , `intallBE(Th2)`, `intallBE(Th3)`
250+
`nuVertex` of now the vertex number of element in intallBE0d integral
251+
`BoundaryBE`, `InternalBE` to know if border element (BE) is on true boundary of not.
252+
update `nElementonB` in case on no manifold data (value greater > 2) in meshL, MeshS case ..
253+
add code to use jump, mean of test functuon on MeshL case. ( not in mesh3 ) to compute RHS.
254+
- add getcwd() function in shell plugin to get the current working dir
255+
- add nuVertex to get the vextex on element in some int?
256+
257+
* Changed
258+
- PETSc 3.16.1
259+
260+
* Deprecated
261+
- SLEPc and SLEPc-complex have been part of PETSc and PETSc-complex for multiple releases and are now deprecated
262+
263+
* Fixed
264+
- examples/potential.edp correct problem in times loops and BC
265+
- tutorial/mortar-DN-4.edp correct problem of region number in meshL
266+
- fix problem in Curve mesh and intallBE , vertex number is wrong
267+
- portability issue on arm64-apple with `make petsc-slepc`
268+
- fix assertion failure with `transfer` and `transferMat` with some finite elements
269+
270+
271+
Version 4.11: new features (4 apr 2022)
272+
=========================
273+
274+
* Added
275+
- add computation scalar product of R3 example : ( N'*Tl)
276+
- add tools to do compution with R3 vector see tutorial/calculus.edp
277+
- add an example tutorial/tgv-test.edp see see what tgv do on matrix build.
278+
- add R3 Th.be(k).N to get the normal of boundary element (in all mesh type)
279+
- add R3 Th.be(k)[i].P to get the point (R3) of boundary vertices
280+
- add R3 Th.be(k).measure to get the measure of the boundary elment
281+
- add projection function to a mesh , meshL, MeshS or mesh3 with return a R3 point
282+
- see new example dist-projection.edp example in exemples
283+
- add dxx, dyy, dzz, dxy, .. on P2L finite element
284+
- add tools to compute solid angle : let R3 O; a given point, Th3 a mesh3 and ThS a meshS.
285+
solidangle(O,Th3.be(ke)) // triangular face is the boundary face
286+
solidangle(O,Th3[k],nuface) // triangular face is face nuface of tet Th3[k]
287+
solidangle(O,ThS[k]) // triangular face is ThS[k]
288+
solidangle(O,A,B,C) // triangular face i (A,B,C)
289+
Volume(O,Th3.be(ke)) // O, triangular face is the boundary face
290+
Volume(O,Th3[k],nuface) // O, triangular face is face nuface of tet Th3[k]
291+
Volume(O,ThS[k]) // O, triangular face is ThS[k]
292+
Volume(O,A,B,C) // (O,A,B,C) tet ..
293+
- in bem pluging add array of HMatrix
294+
- examples/3d/Connectivite-3d.edp or /3dSurf/Connectivite-S.edp of test.
295+
- 3 function mapk, mapkk, mapkk to set a function in fourier space with k parametre
296+
R3 K; // le fourier variable allway 3d (sorry)
297+
int n1=16,n2=8, n3=4;
298+
real[int] tab1(nx,tab2(nx*ny),tab3(nx*ny*nz);
299+
mapk(tab1,K,sqr(K.x));
300+
mapkk(tab2,ny,K,K.norm2);
301+
mapkkk(tab3,ny,nz,K,K.norm2);
302+
// Remark you can change K by P (current point)
303+
- in SurfaceMesh.ipd fonction to build a Isocaedron and a Sphere from this Isocaedron
304+
- new finite element on MeshS this finite element is the ortogonal of RT0 on surface, or
305+
Nelelec Finite Element on triangle with one DoF per mesh edge and where the DoF is the
306+
current on Edge in orientate edge by number of vertices.
307+
- plugin Element_P3pnc for new 2d finite element P3pnc (P3 + 2 bulles) noncoforming (continuite of P2 mod)
308+
and add 2 examples with this new finite element
309+
examples/plugin/cavityNewtowP3pnc.edp examples/plugin/testFE-P3pnc.edp
310+
- function to set dirichlet Boundary conditon on matrix A (real ou compex) trought an real[int]
311+
(if none zero => set BC )
312+
setBC(A,au1[],-2); and the example
313+
examples/3d/Elasticity-simple-support-BC.edp
314+
315+
* Changed
316+
- the beaviour of linear solver UMFPACK, CHOLMOD in case of error , now FreeFEm exit on ExecError like in MUMPS
317+
- PETSc 3.17.0
318+
319+
320+
* Removed
321+
-map function in plugin dfft
322+
323+
* Fixed
324+
- pow(int,int) now call int version not complex version..
325+
- correct the normal the N implicite variable on meshL case
326+
- correct version dump in banner FreeFem++ - version 4.10 (V ...
327+
- correct in CPU time on big mesh due to do bad HCode in HashTable.hpp
328+
- bug in array of finite element on meshhS, meshL (ie. `fespace Vh(ThS,[P1,P1]);` )
329+
330+

0 commit comments

Comments
 (0)