Skip to content

Commit

Permalink
Added regModel to pimple (#746)
Browse files Browse the repository at this point in the history
* Enabled regression par as dv.

* Deleted DAMotion and DARegDb classes

* Removed regDb dependencies.

* Deleted unused models.

* Renamed models to DAMisc

* Moved boundaryConditions to DAMisc.

* Changed the test file name

* Added variance func.

* Added regModel for pimple with a test.
  • Loading branch information
friedenhe authored Jan 26, 2025
1 parent 1389913 commit 2e117cc
Show file tree
Hide file tree
Showing 123 changed files with 859 additions and 8,524 deletions.
1 change: 1 addition & 0 deletions Allclean
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ function cleanDAFoam()
cd src/newTurbModels && ./Allclean && cd -
cd src/pyUnitTests && ./Allclean && cd -
cd src/pyDASolvers && ./Allclean && cd -
cd src/utilities/preProcessing && ./Allclean && cd -
}

# clean original mode
Expand Down
1 change: 1 addition & 0 deletions Allmake
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ function makeDAFoam()
cd src/newTurbModels && ./Allmake && cd -
cd src/pyUnitTests && ./Allmake && cd -
cd src/pyDASolvers && ./Allmake && cd -
cd src/utilities/preProcessing && ./Allmake && cd -
# disable the -e flag
set +e
}
Expand Down
46 changes: 10 additions & 36 deletions dafoam/mphys/mphys_dafoam.py
Original file line number Diff line number Diff line change
Expand Up @@ -722,11 +722,9 @@ def apply_linear(self, inputs, outputs, d_inputs, d_outputs, d_residuals, mode):
DASolver.solverAD.calcJacTVecProduct(
self.stateName,
"stateVar",
self.localAdjSize,
jacInput,
self.residualName,
"residual",
self.localAdjSize,
seed,
product,
)
Expand All @@ -736,17 +734,14 @@ def apply_linear(self, inputs, outputs, d_inputs, d_outputs, d_residuals, mode):
inputDict = DASolver.getOption("inputInfo")
for inputName in list(inputs.keys()):
inputType = inputDict[inputName]["type"]
inputSize = DASolver.solver.getInputSize(inputName, inputType)
product = np.zeros(inputSize)
jacInput = inputs[inputName]
product = np.zeros_like(jacInput)
DASolver.solverAD.calcJacTVecProduct(
inputName,
inputType,
inputSize,
jacInput,
self.residualName,
"residual",
self.localAdjSize,
seed,
product,
)
Expand Down Expand Up @@ -903,11 +898,9 @@ def _updateKSPTolerances(self, psi, dFdW, ksp):
DASolver.solverAD.calcJacTVecProduct(
self.stateName,
"stateVar",
self.localAdjSize,
jacInput,
self.residualName,
"residual",
self.localAdjSize,
seed,
rArray,
)
Expand Down Expand Up @@ -1114,33 +1107,28 @@ def compute_jacvec_product(self, inputs, d_inputs, d_outputs, mode):
for inputName in list(d_inputs.keys()):
# compute dFdW * seed
if inputName == self.stateName:
product = np.zeros(localAdjSize)
jacInput = inputs[self.stateName]
product = np.zeros_like(jacInput)
DASolver.solverAD.calcJacTVecProduct(
self.stateName,
"stateVar",
localAdjSize,
jacInput,
functionName,
"function",
1,
seed,
product,
)
d_inputs[self.stateName] += product
else:
inputType = inputDict[inputName]["type"]
inputSize = DASolver.solver.getInputSize(inputName, inputType)
product = np.zeros(inputSize)
jacInput = inputs[inputName]
product = np.zeros_like(jacInput)
DASolver.solverAD.calcJacTVecProduct(
inputName,
inputType,
inputSize,
jacInput,
functionName,
"function",
1,
seed,
product,
)
Expand Down Expand Up @@ -1267,37 +1255,30 @@ def compute_jacvec_product(self, inputs, d_inputs, d_outputs, mode):

for outputName in list(d_outputs.keys()):
seeds = d_outputs[outputName]
outputSize = len(seeds)

if self.stateName in d_inputs:
inputSize = DASolver.getNLocalAdjointStates()
product = np.zeros(inputSize)
jacInput = inputs[self.stateName]
product = np.zeros_like(jacInput)
DASolver.solverAD.calcJacTVecProduct(
self.stateName,
"stateVar",
inputSize,
jacInput,
outputName,
"thermalVarOutput",
outputSize,
seeds,
product,
)
d_inputs[self.stateName] += product

if self.volCoordName in d_inputs:
inputSize = DASolver.getNLocalPoints() * 3
product = np.zeros(inputSize)
jacInput = inputs[self.volCoordName]
product = np.zeros_like(jacInput)
DASolver.solverAD.calcJacTVecProduct(
self.volCoordName,
"volCoord",
inputSize,
jacInput,
outputName,
"thermalVarOutput",
outputSize,
seeds,
product,
)
Expand Down Expand Up @@ -2496,11 +2477,9 @@ def compute_jacvec_product(self, inputs, d_inputs, d_outputs, mode):
DASolver.solverAD.calcJacTVecProduct(
"states",
"stateVar",
localAdjSize,
jacInput,
functionName,
"function",
1,
seed,
dFdWArray,
)
Expand Down Expand Up @@ -2542,34 +2521,29 @@ def compute_jacvec_product(self, inputs, d_inputs, d_outputs, mode):

# calculate dFdX
inputType = inputDict[inputName]["type"]
input1 = inputs[inputName]
inputSize = DASolver.solver.getInputSize(inputName, inputType)
dFdX = np.zeros(inputSize)
jacInput = inputs[inputName]
dFdX = np.zeros_like(jacInput)
DASolver.solverAD.calcJacTVecProduct(
inputName,
inputType,
inputSize,
input1,
jacInput,
functionName,
"function",
1,
seed,
dFdX,
)
# we need to scale the dFdX for unsteady adjoint too
dFdX = dFdX * dFScaling

# calculate dRdX^T * psi
dRdXTPsi = np.zeros(inputSize)
dRdXTPsi = np.zeros_like(jacInput)
DASolver.vecVal2Array(psi, psiArray)
DASolver.solverAD.calcJacTVecProduct(
inputName,
inputType,
inputSize,
input1,
jacInput,
"residual",
"residual",
localAdjSize,
psiArray,
dRdXTPsi,
)
Expand Down
Loading

0 comments on commit 2e117cc

Please sign in to comment.