ClimaCoreVTK.jl
ClimaCoreVTK.jl provides functionality for writing ClimaCore fields to VTK files, using the WriteVTK.jl package.
Interface
ClimaCoreVTK.writevtk — Functionwritevtk(
basename::String,
fields;
basis=:cell,
latlong=false,
vtkargs...
)Write fields to as an unstructured mesh VTK file named basename.vtu.
fields can be either:
- a ClimaCore
Fieldobject, - a
FieldVectorobject, - a
NamedTupleofFields.
The basis keyword option determines the type of cells used to write.:
:cell(default): output values at cell centers (interpolating where necessary).:point: output values at cell vertices.:lagrange: output values at Lagrange nodes (valid only for spectral element spaces), using Use VTK Lagrange cells to accurately represent high-order elements.
The latlong=true keyword option will output a spherical or spherical shell domain using the Mercator projection, with longitude along the x-axis, latitude along the y-axis, and altitude along the z-axis (if applicable). Note this currently only displays correctly if the number of elements across the cubed sphere face is even.
Any additional keyword arguments are passed to WriteVTK.vtk_grid.
ClimaCoreVTK.writepvd — Functionwritepvd(
basename::String,
times,
fields;
vtkargs...
)Write a sequence of fields at times as a Paraview collection (.pvd) file, along with VTK files.
fields can be either be an iterable collection of fields, or a NamedTuple of collections.
Internal functions
WriteVTK.vtk_grid — Functionvtk_grid(basename, gridspace::ClimaCore.Spaces.AbstractSpace;
basis=:cell, vtkargs...)Construct a VTK grid from a ClimaCore.Spaces.AbstractSpace. If basis=:lagrange, it will construct a mesh made of Lagrange cells (valid only for spectral element spaces), otherwise it will it subdivide the space into quads, with vertices at nodal points.
ClimaCoreVTK.vtk_cells_lagrange — Functionvtkcellslagrange(space)
Construct a vector of MeshCell objects representing the elements of space as an unstuctured mesh of Lagrange polynomial cells, suitable for passing to vtk_grid.
ClimaCoreVTK.vtk_cells_linear — Functionvtkcellslinear(space)
Construct a vector of MeshCell objects representing the elements of space as an unstuctured mesh of linear cells, suitable for passing to vtk_grid.
ClimaCoreVTK.vtk_grid_space — Functionvtk_grid_space(space::ClimaCore.Spaces.AbstractSpace)The space for the grid used by VTK, for any field on space.
This generally does two things:
- Modifies the horizontal space to use a
ClosedUniformquadrature rule, which will use equispaced nodal points in the reference element. This is required for using VTK Lagrange elements (see 1). - Modifies the vertical space to be on the faces.
ClimaCoreVTK.vtk_cell_space — Functionvtk_cell_space(gridspace::ClimaCore.Spaces.AbstractSpace)Construct a space for outputting cell data, when using outputting a grid gridspace. be stored.
This generally does two things:
- Modifies the horizontal space to use a
Uniformquadrature rule, which will use equispaced nodal points in the reference element (excluding the boundary). - Modifies the vertical space to be on the centers.
ClimaCoreVTK.addfield! — Functionaddfield!(vtkfile, prefix::Union{String,Nothing}, f, dataspace)
Add a field or fields f, optionally prefixing the name with prefix to the VTK file vtkfile, interpolating to dataspace.
f can be any of the following:
- a scalar or vector field (if no
prefixis provided, then the field will be named"data") - a composite field, which will be named accordingly
- a
NamedTupleof fields