lp:~fluidity-core/fluidity/moving-mesh-checkpoint
- Get this branch:
- bzr branch lp:~fluidity-core/fluidity/moving-mesh-checkpoint
Branch merges
- Cian Wilson: Pending requested
-
Diff: 210 lines (+95/-25)3 files modifiedfemtools/Checkpoint.F90 (+39/-9)
tests/spherical_patch/spherical_patch.xml (+19/-11)
tests/spherical_patch/spherical_segment.flml (+37/-5)
Related bugs
Related blueprints
Branch information
Recent revisions
- 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... - 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., soif (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