Scale factor and Jacobian determinant

Discrete scale factors are given by

\[ \begin{align}\begin{aligned}\sfact{1} & \equiv \Delta \vx,\\\sfact{2} & \equiv \Delta \vy,\\\sfact{3} & \equiv \Delta \vz,\end{aligned}\end{align} \]

for Cartesian coordinates (is_curved == false), while

\[ \begin{align}\begin{aligned}\sfact{1} & \equiv \Delta \vr,\\\sfact{2} & \equiv \vr \Delta \vt,\\\sfact{3} & \equiv \Delta \vz,\end{aligned}\end{align} \]

for cylindrical coordinates (is_curved == true), respectively.

They are stored at the wall-normal cell faces and centers (except \(\sfact{3}\), which is constant across the whole domain):

src/domain.c
273for(int i = 1; i <= isize + 1; i++){
274  HXXF(i  ) = XC(i  ) - XC(i-1);
275}
src/domain.c
289HXXC(        0) = 0.5 * XF(        2) - 0.5 * XF(    1);
290for(int i = 1; i <= isize; i++){
291  HXXC(i  ) = XF(i+1) - XF(i  );
292}
293HXXC(isize + 1) = 0.5 * XF(isize + 1) - 0.5 * XF(isize);
src/domain.c
308for(int i = 1; i <= isize + 1; i++){
309  HYXF(i  ) = is_curved ? XF(i  ) * ly / ny : ly / ny;
310}
src/domain.c
325for(int i = 0; i <= isize + 1; i++){
326  HYXC(i  ) = is_curved ? XC(i  ) * ly / ny : ly / ny;
327}

Discrete Jacobian determinants, which are also defined at cell faces and centers, are simply the product of the local scale factors:

\[J \equiv \Pi_i \sfact{i}.\]
src/domain.c
341for(int i = 1; i <= isize + 1; i++){
342  JDXF(i  ) = HXXF(i  ) * HYXF(i  );
343}
src/domain.c
357for(int i = 1; i <= isize + 1; i++){
358  JDXF(i  ) = HXXF(i  ) * HYXF(i  ) * hz;
359}
src/domain.c
374for(int i = 0; i <= isize + 1; i++){
375  JDXC(i  ) = HXXC(i  ) * HYXC(i  );
376}
src/domain.c
390for(int i = 0; i <= isize + 1; i++){
391  JDXC(i  ) = HXXC(i  ) * HYXC(i  ) * hz;
392}