Features: 2D/3D types, operators, output, examples, & plotting scripts#32
Merged
Conversation
This commit hoists the 1D scalar grid locations calculator up from scalar_1D_s to tensors_1D_m, renames it from "scalar_1D_grid_locations" to "cell_centers_extended_1D", and makes it public in anticipation of wider use in multidimensional calculations.
This commit hoists the 1D vector grid locations calculator up from vector_1D_s to tensors_1D_m, renames it from "faces" to "faces_1D", and makes it public in anticipation of wider use in multidimensional calculations.
The commit contains the first passing test of a 2D differential operator: .grad. correctly computes a gradient_2D_t when given a scalar_2D_t operand.
This commit increases the rank of the tensor_2D_t values_ component to facilitate storing tensors of rank up to and including rank 4.
This commit tests the .grad. operator with a scalar_2D_t defined as the biquadratic function z = 1 - 2*x + 3*x**2 - x*y/5 + 3*y**2 - 2*y which has the gradient g = [-2 + 6*x - y/5, -x/5 + 6*y - 2] on the domain cells=[30,20], x_min=[-1D0,1D0], x_max=[9D0,4D0].
This commit adds 1. A scalar_2D_t "to_file" type-bound procedure that creates a Juliennne file_t object containing points for a surface plot, 2. An scalar-surface example that creates a scalar and saves it to example/scripts/scalar-surface.csv, and 3. A scalar-surface.gnuplot script that plots the surface and saves it to scalar-surface.gif.
This commit adds 1. A vector_1D constructor for constant vector fields and 2. A vector_2D grid calculator.
This commit 1. Adds public scalar_3D_t and vector_3D_t types and a supporting private tensors_3D_t type and 2. A passing unit test for the gradient of a 3D scalar field.
This commit 1. Updates the scalar-surface plot example to also output files that can be used to plot the gradient of the surface, 2. Redefines the surface so that it corresponds to a velocity potential defining an irrotational vortex, 3. Adds a script that plots the resulting velocity vield and the expected velocity field.
This reverts commit 3b86aa2.
This commit gathers a pattern of scalar_1D_t operand conformability assertions into one function and calls that function where applicable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit adds type-bound consistency- and conformability-
checking functions to the following types:
- tensor_2D_t
- scalar_2D_t
- vector_2D_t
- gradient_2D_t
- divergence_2D_t
where the tensor_2D_t functions are private and are inherited and
used by the other listed types and where each of the other types
has `consistent` and `conformable` generic bindings. Consistency
functions assert that the values_ component is allocated and that
the remaining components are consistent in size with the spatial
dimension and consistent in value with each other, e.g., that the
number of cells is sufficient for the order of accuracy.
Calls to the new functions are distributed throughout the
{tensor,scalar,vector,gradient,divergence}_2D_s submodules as
effective pre- and/or post-conditions for each module procedure.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request
scalar_2D_t,vector_2D_t,scalar_3D_t,vector_3D_tgradient_2D_t,gradient_3Dt,divergence_2D_t,divergence_3D_ttensors_2D_t,tensors_3D_t,gradient_2Dt.div.forvector_2D_tandvector_3D_tand.grad.forscalar_2D_tandvector_3D_toperator(+)forscalar_1Doperandsvector_1D_telementalto support 2D and 3D typesto_filefunctions that generate comma-separated value (CSV) filesscalar_1D_t,tensor_2D_t,scalar_2D_t,vector_2D_t,gradient_2D_t, anddivergence_2D_twheretensor_2D_tfunctions areprivateand are inherited/used by the other listed typesconsistentandconformablegeneric bindingsvalues_component isallocated{tensor,scalar,vector,gradient,divergence}_2D_s, where these invocations check pre- and/or post-conditions for each module procedure.--separate-compilationwithlfortranin CI testinglfortranversion tolatestin the README.md filegfortranworkaroundsscratchsubdirectory to.gitignoretensors_1D_mmodule procedurecell_centers_1Dpublicgnuplotscripts that plot program resultsgnuplotscripts