UnitTests.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2 
3  DAFoam : Discrete Adjoint with OpenFOAM
4  Version : v4
5 
6 \*---------------------------------------------------------------------------*/
7 #include "UnitTests.H"
8 
9 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
10 
11 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
12 // initialize the static variable, which will be used in forward mode AD
13 // computation for AOA and BC derivatives
15 
16 // initialize the python call back function static pointers
17 void* Foam::DAUtility::pyCalcBeta = NULL;
19 
22 
25 
26 namespace Foam
27 {
28 
29 // Constructors
31 {
32 }
33 
35 {
36 }
37 
39  char* argsAll_,
40  PyObject* pyOptions)
41 {
42 #include "setArgs.H"
43 #include "setRootCasePython.H"
44 #include "createTime.H"
45 #include "createMesh.H"
46 
47  Info << "runDAUtilityTest1" << endl;
48 
49  // test pyDict2OFDict
50  dictionary ofOptions;
51  DAUtility::pyDict2OFDict(pyOptions, ofOptions);
52 
53  IOdictionary ofOptionsIO(
54  IOobject(
55  "test_dict",
56  mesh.time().constant(),
57  mesh,
58  IOobject::MUST_READ,
59  IOobject::NO_WRITE));
60 
61  if (ofOptions != ofOptionsIO.subDict("ofOptions"))
62  {
63  Info << "********* pyDict2OFDict test failed! **********" << endl;
64  Info << "ofOptions" << ofOptions << endl;
65  Info << "ofOptionsIO" << ofOptionsIO.subDict("ofOptions") << endl;
66  }
67 
68  // test write/readMatrix
69  Mat tmpMat;
70  MatCreate(PETSC_COMM_WORLD, &tmpMat);
71  MatSetSizes(
72  tmpMat,
73  PETSC_DECIDE,
74  PETSC_DECIDE,
75  11,
76  13);
77  MatSetFromOptions(tmpMat);
78  MatSetUp(tmpMat);
79  MatZeroEntries(tmpMat);
80  PetscScalar val = Pstream::myProcNo() * Pstream::myProcNo();
81  MatSetValue(tmpMat, Pstream::myProcNo(), Pstream::myProcNo(), val, INSERT_VALUES);
82  MatAssemblyBegin(tmpMat, MAT_FINAL_ASSEMBLY);
83  MatAssemblyEnd(tmpMat, MAT_FINAL_ASSEMBLY);
84 
85  DAUtility::writeMatrixBinary(tmpMat, "tmpMat");
86  DAUtility::writeMatrixASCII(tmpMat, "tmpMat");
87 
88  Mat tmpMat1;
89  MatCreate(PETSC_COMM_WORLD, &tmpMat1);
90  DAUtility::readMatrixBinary(tmpMat1, "tmpMat");
91 
92  PetscBool equalFlag;
93  MatEqual(tmpMat, tmpMat1, &equalFlag);
94  if (!equalFlag)
95  {
96  Info << "********* read/writeMatrixBinary test failed! **********" << endl;
97  }
98 
99  // test write/readVector
100  Vec tmpVec;
101  VecCreate(PETSC_COMM_WORLD, &tmpVec);
102  VecSetSizes(tmpVec, 17, PETSC_DETERMINE);
103  VecSetFromOptions(tmpVec);
104  VecSet(tmpVec, 1.0);
105 
106  DAUtility::writeVectorBinary(tmpVec, "tmpVec");
107  DAUtility::writeVectorASCII(tmpVec, "tmpVec");
108 
109  Vec tmpVec1;
110  VecCreate(PETSC_COMM_WORLD, &tmpVec1);
111  DAUtility::readVectorBinary(tmpVec1, "tmpVec");
112 
113  VecEqual(tmpVec, tmpVec1, &equalFlag);
114  if (!equalFlag)
115  {
116  Info << "********* read/writeVectorBinary test failed! **********" << endl;
117  }
118 
119  Info << "runDAUtilityTest1 Passed!" << endl;
120 }
121 
122 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
123 
124 } // End namespace Foam
125 
126 // ************************************************************************* //
Foam::DAUtility::readMatrixBinary
static void readMatrixBinary(Mat matIn, const word prefix)
read petsc matrix in binary format
Definition: DAUtility.C:378
Foam::DAUtility::pyCalcBetaJacVecProdInterface
static pyJacVecProdInterface pyCalcBetaJacVecProdInterface
Definition: DAUtility.H:121
Foam::DAUtility::readVectorBinary
static void readVectorBinary(Vec vecIn, const word prefix)
read petsc vector in binary format
Definition: DAUtility.C:282
Foam::DAUtility::pyCalcBeta
static void * pyCalcBeta
define a function pointer template for Python call back
Definition: DAUtility.H:117
Foam::DAUtility::pyCalcBetaInterface
static pyComputeInterface pyCalcBetaInterface
Definition: DAUtility.H:118
Foam::UnitTests::runDAUtilityTest1
void runDAUtilityTest1(char *argsAll, PyObject *pyOptions)
run the test
Definition: UnitTests.C:38
Foam::pySetCharInterface
void(* pySetCharInterface)(const char *, void *)
Definition: DAUtility.H:29
setRootCasePython.H
Foam::DAUtility::pyCalcBetaJacVecProd
static void * pyCalcBetaJacVecProd
Definition: DAUtility.H:120
Foam::DAUtility::pySetModelNameInterface
static pySetCharInterface pySetModelNameInterface
Definition: DAUtility.H:124
Foam::UnitTests::~UnitTests
virtual ~UnitTests()
Destructor.
Definition: UnitTests.C:34
Foam::DAUtility::angleOfAttackRadForwardAD
static scalar angleOfAttackRadForwardAD
angle of attack in radian used in forward mode AD
Definition: DAUtility.H:114
Foam::UnitTests::UnitTests
UnitTests()
Construct from components.
Definition: UnitTests.C:30
mesh
fvMesh & mesh
Definition: createRefsHeatTransfer.H:4
Foam::DAUtility::pyDict2OFDict
static void pyDict2OFDict(PyObject *pyDict, dictionary &ofDict)
convert a python dictionary object to OpenFoam dictionary
Definition: DAUtility.C:24
UnitTests.H
Foam::DAUtility::pySetModelName
static void * pySetModelName
Definition: DAUtility.H:123
Foam::DAUtility::writeVectorBinary
static void writeVectorBinary(const Vec vecIn, const word prefix)
write petsc vector in binary format
Definition: DAUtility.C:315
Foam
Definition: checkGeometry.C:32
Foam::pyJacVecProdInterface
void(* pyJacVecProdInterface)(const double *, double *, int, const double *, const double *, int, void *)
Definition: DAUtility.H:28
Foam::DAUtility::writeMatrixBinary
static void writeMatrixBinary(const Mat matIn, const word prefix)
write petsc matrix in binary format
Definition: DAUtility.C:411
Foam::DAUtility::writeVectorASCII
static void writeVectorASCII(const Vec vecIn, const word prefix)
write petsc vector in ascii format
Definition: DAUtility.C:347
Foam::DAUtility::writeMatrixASCII
static void writeMatrixASCII(const Mat matIn, const word prefix)
write petsc matrix in ascii format
Definition: DAUtility.C:443
Foam::pyComputeInterface
void(* pyComputeInterface)(const double *, int, double *, int, void *)
Definition: DAUtility.H:27
setArgs.H