Skip to content

Releases: mdolab/dafoam

v3.1.2

18 Jun 18:11
3492f59
Compare
Choose a tag to compare

Changes

  • Added primal and adjoint solvers for DARhoPimpleFoam 217f5e1. This solver is still in the beta state.
  • Changed the intermediate optimization folder format to 0.0001, 0.0002, etc. 5f2cc15
  • Allowed multi betaFI by using new names such as betaFINuTilda. 7570ed7
  • Added an option to use step-averaged states for steady-state solvers. 1b56851 This is for steady-state solvers with oscillating flow states due to separation.
  • Enabled using objective function's standard deviation as convergence criterion for steady-state solvers. d58cd15
  • Added the radial basis function for regressionModel. Also added the ReLU activation function. 35e0a4c
  • Allowed parallel field inversion cases with v3 run scripts. d0379b0
  • Allowed saving flow features to the disk for field inversion. 8afd2ab
  • Added TensorFlow callback functions for the regModel 304957a
  • Enabled using multiple regression models for computing multiple augmented fields in field inversion. be232cb
  • Allowed prescribing heat source for DAHeatTransferFoam. 8a9c93a
  • Added an option to use the latest flow fields instead of reading initial fields from the 0 folders for unsteady solvers. eb6d1b3

Dependency update

  • Updated the pyOFM version to 1.2.2 with new APIs for read/write fields.

Backward-incompatible changes

  • The naming convention for optimization intermediate folders has changed to 0.0001, 0.0002, etc. This will not change how we run the case, but it may create backward compatibility for some post-processing scripts that need to read the intermediate folders.
  • The augmented flow variable's name has changed from betaFI to more specific variable names, such as betaFINuTilda, betaFIOmega, etc. Users need to change betaFI in their runScript.py to the new naming convention.
  • The regressionModel dict has a new interface that supports multiple regression models. See an example from here
  • The tensorflow dict has a new interface that supports multiple regression model. See here

v3.1.1

06 Mar 00:33
695e280
Compare
Choose a tag to compare

Changes

  • Changed how the primalResTol is calculated. 376843f The primalResTol did not consider the turbulence model, and it is fixed now.

  • Added a refDiffSquare option to compute the variance of all existing objective functions wrt prescribed values. 1c40d73 This can be used in unsteady FIML, e.g., to match a prescribed time series for CL.

  • Added post-processing util to extract time series ee24e98 and RMSE 13b4bc2 for unsteady cases.

  • Added a homTemp boundary condition from Eric 695e280.

Dependency update

None

Backward-incompatible changes

  • Slightly changed the docker image's loadDAFoam.sh (changed $HOME to /home/dafoamuser) to make it more compatible with Singularity. This change is implemented in the docker images v3.1.1+.

v3.1.0

14 Feb 01:53
561f127
Compare
Choose a tag to compare

Changes

  • Enabled unsteady adjoint-based optimization with pimpleFoam. 6f44401 f1495b9

  • Added a new objective function that can calculate the variance of a selected variable with provided reference data. 8acedec

  • Added the actuator disk direction as the design variable. 234fbd3

  • Fixed a parallel bug in fvSource calculation. Contribution from @bernardopacini 1098eef

  • Added a new boundary condition with time-varying angle of attack. 7c5ebda

  • Added an interface to pass OpenFOAM fields in the C++ layer to the Python layer. 7c5ebda

  • Fixed an issue to avoid the dF partials calculation from initializing the objFunc class multiple times. b3b52df

  • Fixed a bug for conjugate heat transfer. The setThermal was not set to the C++ AD layer, it is fixed now. d7073e1

  • Fixed an issue in area calculation for heat transfer objFunc. The area was calculated once and not updated. It is fixed now. b3b52df

  • Added a regression model class that can use local flow features to compute a field variable. fae63b7

  • Added a new feature that automatically validates if the state variables are valid (i.e., if there are nan and inf values) during each primal iteration. If invalid values are detected, the primal will reset these invalid values to its initial reference ones and return a fail flag for the primal. aafbff4

  • Added a new feature to use internal design variables for all v2 scripts. This new feature allows us to directly set the angle of attack, beta, and alpha variables without the need to load the FFD. f713943

  • Reimplemented the sensitivity map and made the sensitivity fields fully consistent with the other fields in OpenFOAM. aa18fb4

  • Changed the naming convention for the optimization intermediate solutions. It was called 0.0000001, 0.000002, etc. Now it is called 1e-8, 2e-8, etc. The new naming convention is fully consistent with OpenFOAM's built-in standard. aa18fb4

  • Updated the solidDisplacement solver and made its derivatives accurate. d44b670

Dependency update

None

Backward-incompatible changes

None

v3.0.8

10 Nov 19:54
767274c
Compare
Choose a tag to compare

Changes

  • Added an option to use constrainHbyA 35e4cd4. This allows the DASolvers to be more consistent with OpenFOAM's original solvers.
  • Added an option to automatically check if the patch names in primalBC and objFunc are valid. a649d7e
  • Fixed the inaccurate mesh quality objFunc in parallel. 0cf80ff
  • Renamed the calcLiftPerS utility to calcForcePerS, so it is more general. fa18d2a
  • Added the writeDeformedFFDs feature back. Also added an option to write deformed constraints. 388bd48
  • Added a location (e.g., maximal radius) objective function. 3956592
  • Fixed a bug for the vector sensitivity map. Also allowed using vector field variables are design variables. 767274c

Dependency update

None

Backward-incompatible changes

None

v3.0.7

24 Jul 21:30
a00afb1
Compare
Choose a tag to compare

Changes

  • Used OpenFOAM's built-in conjugate heat transfer coupling scheme: turbulentTemperatureCoupledBaffleMixed. The old fluid (heat flux) and solid (temperature) coupling scheme is deprecated. cc521c5
  • Added a new solver DAHeatTransferFoam for conjugate heat transfer. cc521c5
  • Added an initial version of the CFD-based wing-propeller coupling interface. 6c6f385
  • Added deactivateValue calls after getGradient calls for all AD functions. 6f90b77 Now, all the AD functions will call the forward func twice. The first time is for computing the matrix-vector products or partial derivatives. Then, we will deactivate all the inputs and call the forward func one more time. This will let the zero-seed inputs propagate to the outputs to clean up the seeds for all intermediate OF variables. Not doing this may potentially mess up the seeds for future AD functions.
  • Fixed a bug that relative tolerances were sometimes not properly set when solving multiple adjoint equations in an optimization iteration. 273a80b
  • Allowed using totalPressure and totalTemperature as the boundary conditions for turbomachinery cases. 046b0d2. Check the new Rotor37 setup from here
  • Added an automatic docker image build CI. 0080e31. Now the DAFoam repo will automatically build and deploy a new docker image: dafoam/opt-packages:latest for each new commit.

Dependency update

We have updated the following dependencies. Check the latest installation guide for more details.

  • pyOptSparse updated to 2.10.1

  • OpenMDAO updated to 3.26

  • FUNtoFEM updated to v0.3

  • Mphys updated to b6db10

Backward-incompatible changes

None

v3.0.6

26 May 20:11
3c477e2
Compare
Choose a tag to compare

Changes

  • Added a new feature to call Python functions in the C++ layer. 1f68006
  • Use TensorFlow Python APIs for predicting and calculating gradients. The old TensorFlow C APIs are deprecated. 1f68006
  • Fixed a bug for multi-point setup caused by a recent update. fd32b81
  • Updated the CoDiPack and MediPack versions and used the latest APIs for AD tapes 6e9cd14
  • Added an option to use uniform fvSource as a design variables to replace the uniformPressureGradient option 106f054
  • Allowed using non-geo design variable setup for topology optimization or field inversion. Now we don't need to set up FFD or meshOptions for these cases. fb38ae1 Check the new tutorial run script from here
  • Showed errors in the GitHub Actions tests by removing the 2> errorLog.txt compilation argument in the test scripts. 3c477e2

Dependency update

  • OpenFOAM-AD upgraded to v1.3.0 with the latest CoDiPack and MeDiPack versions.
  • Deprecated the TensorFlow C APIs and used the Python APIs instead.

Backward-incompatible changes

None

v3.0.5

06 May 00:51
03b7d2c
Compare
Choose a tag to compare

Changes

  • Added the conjugate heat transfer optimization capability 6233802
  • Added a function to calculate fvSource based on propeller design parameters b3f73e2
  • Added wall heat flux objective function to solid solvers d8b721a
  • Added a new key couplingInfo in DAOption for setting MDO coupling information 9768b2c
  • Changed docker test image OS to Ubuntu 20.04 2f13ee8

Dependency update

None

Backward-incompatible changes

  • The old fsi key for setting aerostructural coupling is deprecated. Now the aerostructural information is set in the new key couplingInfo. See an example from here
  • check_total function needs an additional key called functionals. For example, we need to replace the old key cruise.aero_post.CL with cruise.aero_post.functionals.CL. See an example from here

v3.0.4

14 Feb 22:21
f7dc586
Compare
Choose a tag to compare

Changes

  • Fixed a bug for aerostructural optimization in parallel. The derivative of structural functions was not accurate due to an inconsistent serial/parallel convention in MPhys aero (DAFoam) and struct components (TACS). See detailed description from here. No updates are needed for DAFoam, but we need to update the dependencies: OpenMDAO, MPhys, and TACS.

  • Fixed a bug for Multiple Patches in Aerostructural Coupling a83b5f3. Now we support having multiple design surface patches for Aerostructural Coupling.

  • Added a fixed-point iteration adjoint solver 498874c. Now it works in serial only.

  • Changed the multi-case setting f7dc586. Now it is done in MPhys.

Dependency update

Updated OpenMDAO to 3.25.0
Updated MPhys to 1.1.0
Updated TACS to 3.2.1

Backward-incompatible changes

One needs to update runScript.py for multi-case optimization. Check the latest setting from here

v3.0.3

12 Oct 01:45
0009b91
Compare
Choose a tag to compare

Changes

  • Fixed a critical bug (fBar seeds) in the DAFoamFunctions to make combined objectives such as L/D and multipoint have accurate derivatives a175e43
  • Added an option ("comps") to allow selective actuator disk design variables 9f837b7
  • Moved the coloring solution to the solve_linear such that coloring will not run for primal 20e112a
  • Enabled more fvOptions functionalities a537446

Dependency update

None

Backward-incompatible changes

None

v3.0.2

02 Oct 01:54
e043da9
Compare
Choose a tag to compare

Changes

  • Added a flag (ENV: DAFOAM_NO_WARNINGS) to suppress warnings such that one can see build error on the screen (no need to use 2> to redirect the errors/warnings) e043da9
  • Printed the objective function when solving the adjoint equation d72aef6
  • Added a new objective function (propeller power) 81bb716
  • Improved the code coverage
  • Allowed using the actuator thrust as the design variable 7d32447
  • Increased the default adjPCLag to 1000 0cdfcf1
  • Improved the field inversion interface 8c7d091

Dependency update

  • Updated the pyGeo version to 1.12.2

Backward-incompatible changes

  • One needs to update the FFD file interface for all v3 runScript.py. The old ffd_file argument is deprecated, and one needs to use a more general argument file and prescribe the DVGeo type, e.g., OM_DVGEOCOMP(file="FFD/wingFFD.xyz", type="ffd")