lp:~fluidity-core/fluidity/moving-mesh-checkpoint

Created by Stephan Kramer and last modified
Get this branch:
bzr branch lp:~fluidity-core/fluidity/moving-mesh-checkpoint
Members of Fluidity Core Team can upload to this branch. Log in for directions.

Branch merges

Related bugs

Related blueprints

Branch information

Owner:
Fluidity Core Team
Project:
Fluidity
Status:
Merged

Recent revisions

3993. By Stephan Kramer

Relax those tolerances a bit.

3992. By Stephan Kramer

Merging in trunk.

3991. By Stephan Kramer

Moving mesh with checkpointing now works in spherical_patch test case.
Moving mesh with superparametric seems to give weird results (fails to conserve and also fails to solve when changing timestep to dt=600.). So switching off for the moment, but keeping P2 coordinates (initialised as linear elements), so we should get exact mass conservation with p1dg-p2 and moving free surface.

3990. By Stephan Kramer

Fix checkpointing for free surface moving mesh simulations by using OriginalCoordinate for the dumping the mesh and the field vtus.
Switch on mesh movement in the spherical_patch test to test this. Adding new conservation tests - not passing these yet, not sure why...

3989. By Stephan Kramer

Fixing changed dependencies ('make makefiles') since my gmsh commit.

3988. By Jon Hill

Minor change to fldecomp makefile.in to get fldecomp to compile on HECToR. Almost got a fully working build...

3987. By Stephan Kramer

Fixing gmsh reader to read meshes on the sphere (i.e. meshes with topological dimension 2, and coordinate dimension 3).

Also adding a parallel spherical_patch test case that tests this reading, writing out to a checkpoint, and flredecomping to a different number of processes.

Some optimisation and cleaning up of Read_GMSH.F90:
- prevent reading of the gmsh file twice. This was because read_gmsh_simple() called identify_gmsh_file() to establish
various dimensions, which it can only do by reading the entire file. Then an appropriate shape functon was allocated
and read_gmsh_to_field was called which read the file again.
- the only version of read_gmsh_files to remain is the _simple version (as this was the only one in use). It
first reads in all the data, then establishes the necessary dimensions and then allocates the appropriate femtools
objects.
- the dimension of the read gmsh mesh is now established from the topology of the mesh, basically looking at the
highest dimension elements present, i.e. if there's tets or hexes it's 3d, otherwise 2d (1d gmsh reading is untested)
Previously this was done by looking at the z coordinate and seeing if it was small using some arbitray, hard-coded definition
of small. This is obviously not a good idea.
- the dimension of the coordinate field that is returned (X%dim) is in most cases chosen to be the same as
the topological dimension. Only with the /geometry/spherical_earth option this is always 3 so that a 2d spherical
horizontal mesh (to be extruded inside fluidity) can be read. This was broken before. The other codes that use
embedded meshes (shallow water) use a specific option that only works for triangle, so that functionality should
remain unchanged.
- remove identify_gmsh_files()
- because of this remove identify_mesh_files() from the mesh_files module
- in all subroutines of the mesh_files module make format a required argument. Before, if the argument was not present
a "guess" would be made. In some tools where no option tree is present (e.g. test_laplacian) this would always default
to "triangle". These therefore now directly call read_triangle_files. In all other cases the format should be worked
out. For output this can be a bit tricky. For checkpointing the same logic is followed as before (look at the option
under the external mesh). For adaptivity debugging meshes it now always uses gmsh.
- identify_mesh_files() was only used in populate_state, in the case of inactive process (flredecomp from less
to more processes), where inactive processed needed to know the dimensions of the mesh. This is now communicated
via a MPI_Scatter()

3986. By Stephan Kramer

Removing three places with hard-coded values (two different ones) for the radius of the earth. This was all in dead code. Hard-coding this is not a good idea, as the mesh generator may have used another one.

Two more places remain: femtools/projection.cpp and ocean_forcing/climate_reader.cpp, these are used in determining what layer of 3D input data to use. This will be fixed (instead using the outer radius
of the original input mesh coordinates) in the rewrite of the netcdf readers.

3985. By Lawrence Mitchell

Fix null dereference when checking halo types

Logical evaluations aren't necessarily short-circuited when an
argument evaluates to .false., so

   if (associated(foo) .and. (foo%bar == baz))

may dereference foo even if it is unassociated. So don't do it.

3984. By Lawrence Mitchell

Make linear system assembly local (non-communicating)

This merge brings in non-communicating assembly routines for all
equation forms. It also adds OpenMP threaded assembly for DG and CG
Momentum and CG advection diffusion. To enable the latter, configure
--with-openmp.

For non-communicating assembly, we assemble in halo elements for DG as
well as CG such that each process has complete information for its
local dofs. PETSc matrices are then assembled with the option
MAT_IGNORE_OFF_PROC_ENTRIES, which makes the PETSc assembly a no-op.

OpenMP threading makes the assembly loops iterate in colour order.
The correct colouring is stashed on the topology mesh between adapts.
A number of routines are not thread-safe. If you call them in
threaded code they will now abort, fix it!

Branch metadata

Branch format:
Branch format 7
Repository format:
Bazaar repository format 2a (needs bzr 1.16 or later)
Stacked on:
lp:fluidity
This branch contains Public information 
Everyone can see this information.