15 double covariant[3][3] = {
20 double contravariant[3][3] = {{0.0}};
22 PetscFunctionBeginUser;
27 PetscFunctionReturn(0);
35 const PetscReal J[3][3] = {
40 const PetscReal u[3] = {1.5, -2.0, 4.0};
41 PetscReal uc[3] = {0.0, 0.0, 0.0};
43 PetscFunctionBeginUser;
48 PetscFunctionReturn(0);
56 const PetscReal J[3][3] = {
61 const PetscReal u[3] = {2.0, 3.0, 4.0};
62 PetscReal uc[3] = {0.0, 0.0, 0.0};
64 PetscFunctionBeginUser;
69 PetscFunctionReturn(0);
77 const Cmpnts csi = {2.0, 0.0, 0.0};
78 const Cmpnts eta = {0.0, 3.0, 0.0};
79 const Cmpnts zet = {0.0, 0.0, 4.0};
80 double ni[3] = {0.0, 0.0, 0.0};
81 double nj[3] = {0.0, 0.0, 0.0};
82 double nk[3] = {0.0, 0.0, 0.0};
83 double Ai = 0.0, Aj = 0.0, Ak = 0.0;
85 PetscFunctionBeginUser;
99 PetscFunctionReturn(0);
107 const Cmpnts csi = {2.0, 0.0, 0.0};
108 const Cmpnts eta = {0.0, 3.0, 0.0};
109 const Cmpnts zet = {0.0, 0.0, 4.0};
110 double dx = 0.0, dy = 0.0, dz = 0.0;
112 PetscFunctionBeginUser;
117 PetscFunctionReturn(0);
131 const double wall_normal = 4.73e-4, streamwise = 3.049381e-2;
132 const Cmpnts csi = {wall_normal * streamwise, 0.0, 0.0};
133 const Cmpnts eta = {0.0, wall_normal * streamwise, 0.0};
134 const Cmpnts zet = {0.0, 0.0, wall_normal * wall_normal};
135 const double volume = wall_normal * wall_normal * streamwise;
136 double dx = 0.0, dy = 0.0, dz = 0.0;
138 PetscFunctionBeginUser;
143 PetscFunctionReturn(0);
151 const Cmpnts csi = {2.0, 0.0, 0.0};
152 const Cmpnts eta = {4.0, 0.0, 0.0};
153 const Cmpnts zet = {0.0, 0.0, 3.0};
154 double dx = 0.0, dy = 0.0, dz = 0.0;
155 PetscErrorCode refused = 0;
157 PetscFunctionBeginUser;
158 PetscCall(PetscPushErrorHandler(PetscIgnoreErrorHandler, NULL));
160 PetscCall(PetscPopErrorHandler());
162 "a coplanar cell is refused, and the caller is told"));
163 PetscFunctionReturn(0);
182 ierr = PetscInitialize(&argc, &argv, NULL,
"PICurv metric tests");
187 ierr =
PicurvRunTests(
"unit-metric", cases,
sizeof(cases) /
sizeof(cases[0]));
193 ierr = PetscFinalize();
PetscErrorCode InvertCovariantMetricTensor(double covariantTensor[3][3], double contravariantTensor[3][3])
Inverts the 3x3 matrix of face-area vectors to obtain the covariant directions.
PetscErrorCode ComputeCellCharacteristicLengthScale(PetscReal ajc, Cmpnts csi, Cmpnts eta, Cmpnts zet, double *dx, double *dy, double *dz)
Computes characteristic length scales (dx, dy, dz) for a curvilinear cell.
PetscErrorCode CalculateFaceNormalAndArea(Cmpnts csi, Cmpnts eta, Cmpnts zet, double ni[3], double nj[3], double nk[3], double *Ai, double *Aj, double *Ak)
Computes the unit normal vectors and areas of the three faces of a computational cell.
PetscErrorCode MetricVelocityContravariant(const PetscReal J[3][3], PetscReal detJ, const PetscReal u[3], PetscReal uc[3])
Converts a Cartesian velocity vector to contravariant logical components.
static PetscErrorCode TestMetricVelocityContravariantScaledAxes(void)
Tests contravariant velocity computation for scaled axes.
int main(int argc, char **argv)
Runs the unit-metric PETSc test binary.
static PetscErrorCode TestInvertCovariantMetricTensorDiagonal(void)
Tests inversion of a diagonal covariant metric tensor.
static PetscErrorCode TestMetricVelocityContravariantIdentity(void)
Tests contravariant velocity computation for identity metrics.
static PetscErrorCode TestCalculateFaceNormalAndAreaAxisAligned(void)
Tests face-normal and face-area calculation on an axis-aligned cell.
static PetscErrorCode TestComputeCellCharacteristicLengthScaleAxisAligned(void)
Tests characteristic length-scale computation on an axis-aligned cell.
static PetscErrorCode TestComputeCellCharacteristicLengthScaleWallResolvedCell(void)
Tests the length scales of a wall-resolved cell, whose metrics are tiny.
static PetscErrorCode TestDegenerateCellIsRefused(void)
Tests that a degenerate cell is still refused, and that the refusal propagates.
PetscErrorCode PicurvAssertRealNear(PetscReal expected, PetscReal actual, PetscReal tol, const char *context)
Asserts that two real values agree within tolerance.
PetscErrorCode PicurvRunTests(const char *suite_name, const PicurvTestCase *cases, size_t case_count)
Runs a named C test suite and prints pass/fail progress markers.
PetscErrorCode PicurvAssertIntEqual(PetscInt expected, PetscInt actual, const char *context)
Asserts that two integer values are equal.
Shared declarations for the PICurv C test fixture and assertion layer.
Named test case descriptor consumed by PicurvRunTests.
A 3D point or vector with PetscScalar components.