This example is very similar to the example “saphir”, the main difference being that it reads a mesh file in the exodusii format (created by Cubit). This example only builds if you have the ExodusII and NetCDF libraries installed on your system and the variables WITH_EXODUSII, EXODUSII_ROOT and NETCDF_ROOT defined properly. The latter can be done, for example, in the CMake.vars file as follows:
SET(WITH_EXODUSII YES)
SET(EXODUSII_ROOT /opt/packages/exodusii)
SET(NETCDF_ROOT /opt/packages/netcdf)
The mesh is now loaded using the ExodusIIReader:
// Load the mesh
Mesh mesh;
ExodusIIReader mloader;
if (!mloader.load("iron-water.e", &mesh)) error("ExodusII mesh load failed.");
The model describes an external-force-driven configuration without fissile materials present. We will solve the one-group neutron diffusion equation
(1)
The domain of interest is a 30 x 30 cm square consisting of four regions. A uniform volumetric source is placed in water in the lower-left corner of the domain, surrounded with a layer of water, a layer of iron, and finally another layer of water:
The unknown is the neutron flux . The values of the diffusion coefficient , absorption cross-section and the source term are constant in the subdomains. The source in area 1 and zero elsewhere. The boundary conditions for this problem are zero Dirichlet (right and top edges) and zero Neumann (bottom and left edges).
Solution:
Final mesh (h-FEM with linear elements):
Final mesh (h-FEM with quadratic elements):
Final mesh (hp-FEM):
DOF convergence graphs:
CPU time convergence graphs: