Automatic Differentiation of a CAD System applied in an ... · Automatic Differentiation of a CAD...

Post on 10-May-2018

219 views 4 download

Transcript of Automatic Differentiation of a CAD System applied in an ... · Automatic Differentiation of a CAD...

Automatic Differentiation of a CAD Systemapplied in an Adjoint CFD Method

Mladen Banovic, Orest Mykhaskiv, Salvatore AuriemmaAndrea Walther, Jens-Dominik Müller, Herve Legrand

mladen.banovic@math.uni-paderborn.de, o.mykhaskiv@qmul.ac.uk,

salvatore.auriemma@opencascade.com

15th September, 2016AD2016, Christ Church Oxford, UK

CAD-based shape optimisation

CAD-based shape optimisation

Given a CAD-model with design parameters α

Gradient-based optimisationminα

J(U(Xs(α)),Xs(α), α) (1)

R(U(Xs(α)),Xs(α)) = 0 (2)

dJdα

=dJ

dXS

dXS

dα(3)

I CFD sensitivity dJdXS

: Adjoint method (efficiency)

I CAD sensitivity dXSdα : Forward Automatic Differentiation

Mladen Banovic 1 / 17 15.09.2016

OpenCASCADE Technology

OpenCASCADE Technology

OpenCASCADE Technology (OCCT) is an open source C++ library,consisting of thousands of classes and providing solutions in theareas of:

I Surface and solid modelling: to model any type of object,I 3D and 2D visualization: to display and animate objects,I Data exchange (import and export standard CAD formats) and

tree-like data model.

Mladen Banovic 2 / 17 15.09.2016

U-bend

Testcase under investigation: U-bend pipe

Parametrisation - done in the U-partI Based on a cross-sectional design approach, lofting, which

takes N-slices as inputs in order to construct a final surface.

I The generic slice consists of 12 control points and each controlpoint is characterized by a law of evolution along the pathline.

I In particular, every law is B-spline curve whose control pointscoordinates are the design parameters (96) of the simulation.

Mladen Banovic 3 / 17 15.09.2016

U-bend

Testcase under investigation: U-bend pipe

Parametrisation - done in the U-partI Based on a cross-sectional design approach, lofting, which

takes N-slices as inputs in order to construct a final surface.I The generic slice consists of 12 control points and each control

point is characterized by a law of evolution along the pathline.

I In particular, every law is B-spline curve whose control pointscoordinates are the design parameters (96) of the simulation.

Mladen Banovic 3 / 17 15.09.2016

U-bend

Testcase under investigation: U-bend pipe

Parametrisation - done in the U-partI Based on a cross-sectional design approach, lofting, which

takes N-slices as inputs in order to construct a final surface.I The generic slice consists of 12 control points and each control

point is characterized by a law of evolution along the pathline.I In particular, every law is B-spline curve whose control points

coordinates are the design parameters (96) of the simulation.

Mladen Banovic 3 / 17 15.09.2016

CAD sensitivities

Calculating the CAD sensitivities (I)

In order to calculate the shape derivatives w.r.t. design parameters,OCCT has been differentiated by integrating the AD tool ADOL-C.

Automatic Differentiation by OverLoading in C++ADOL-C uses operator overloading concept to compute first andhigher derivatives of vector functions that are written in C or C++.

Options Differentiation modes Integrated to OCCTtrace-based forward, reverse 7

traceless forward X

Traceless forward differentiationComputes first order derivatives. The derivative computation ispropagated directly on the function evaluation.

Mladen Banovic 4 / 17 15.09.2016

CAD sensitivities

Calculating the CAD sensitivities (I)

In order to calculate the shape derivatives w.r.t. design parameters,OCCT has been differentiated by integrating the AD tool ADOL-C.

Automatic Differentiation by OverLoading in C++ADOL-C uses operator overloading concept to compute first andhigher derivatives of vector functions that are written in C or C++.

Options Differentiation modes Integrated to OCCTtrace-based forward, reverse 7

traceless forward X

Traceless forward differentiationComputes first order derivatives. The derivative computation ispropagated directly on the function evaluation.

Mladen Banovic 4 / 17 15.09.2016

Vector mode

Traceless forward vector modeOperator overloading exampleclass myadouble{double value;double *ADvalue = new double[NUMBER_OF_DIRECTIONS];// multiplication ...inline myadouble operator * (const myadouble& a) const {myadouble tmp;tmp.value = value * a.value;for(size_t i = 0; i < NUMBER_OF_DIRECTIONS; ++i)tmp.ADvalue[i] = ADvalue[i] * a.value + value * a.ADvalue[i];

return tmp;}};

DescriptionI NUMBER_OF_DIRECTIONS = number of design parameters.I Derivaties w.r.t. all design parameters are evaluated with just one

code run.

Mladen Banovic 5 / 17 15.09.2016

OCCT differentiation

OCCT Differentiation (I)All variables that may be considered as differentiable quantities mustbe of an active type, which is named adouble in ADOL-C.

Original code Differentiatedcode

adouble

injection

Possible ways of code modification

1. Introduce AD-specialized properties and methods in originalentity class.

2. Use the inheritance model to create a child class from everyoriginal entity class, defining extra AD properties and methods.

3. Create a class which holds a pointer to the original entity class +extra AD properties and methods - controller approach.

4. Modify original entities in a way of C++ templates.5. Typedef approach - succeeded!

Mladen Banovic 6 / 17 15.09.2016

OCCT differentiation

OCCT Differentiation (I)All variables that may be considered as differentiable quantities mustbe of an active type, which is named adouble in ADOL-C.

Original code Differentiatedcode

adouble

injection

Possible ways of code modification1. Introduce AD-specialized properties and methods in original

entity class.

2. Use the inheritance model to create a child class from everyoriginal entity class, defining extra AD properties and methods.

3. Create a class which holds a pointer to the original entity class +extra AD properties and methods - controller approach.

4. Modify original entities in a way of C++ templates.5. Typedef approach - succeeded!

Mladen Banovic 6 / 17 15.09.2016

OCCT differentiation

OCCT Differentiation (I)All variables that may be considered as differentiable quantities mustbe of an active type, which is named adouble in ADOL-C.

Original code Differentiatedcode

adouble

injection

Possible ways of code modification1. Introduce AD-specialized properties and methods in original

entity class.2. Use the inheritance model to create a child class from every

original entity class, defining extra AD properties and methods.

3. Create a class which holds a pointer to the original entity class +extra AD properties and methods - controller approach.

4. Modify original entities in a way of C++ templates.5. Typedef approach - succeeded!

Mladen Banovic 6 / 17 15.09.2016

OCCT differentiation

OCCT Differentiation (I)All variables that may be considered as differentiable quantities mustbe of an active type, which is named adouble in ADOL-C.

Original code Differentiatedcode

adouble

injection

Possible ways of code modification1. Introduce AD-specialized properties and methods in original

entity class.2. Use the inheritance model to create a child class from every

original entity class, defining extra AD properties and methods.3. Create a class which holds a pointer to the original entity class +

extra AD properties and methods - controller approach.

4. Modify original entities in a way of C++ templates.5. Typedef approach - succeeded!

Mladen Banovic 6 / 17 15.09.2016

OCCT differentiation

OCCT Differentiation (I)All variables that may be considered as differentiable quantities mustbe of an active type, which is named adouble in ADOL-C.

Original code Differentiatedcode

adouble

injection

Possible ways of code modification1. Introduce AD-specialized properties and methods in original

entity class.2. Use the inheritance model to create a child class from every

original entity class, defining extra AD properties and methods.3. Create a class which holds a pointer to the original entity class +

extra AD properties and methods - controller approach.4. Modify original entities in a way of C++ templates.

5. Typedef approach - succeeded!

Mladen Banovic 6 / 17 15.09.2016

OCCT differentiation

OCCT Differentiation (I)All variables that may be considered as differentiable quantities mustbe of an active type, which is named adouble in ADOL-C.

Original code Differentiatedcode

adouble

injection

Possible ways of code modification1. Introduce AD-specialized properties and methods in original

entity class.2. Use the inheritance model to create a child class from every

original entity class, defining extra AD properties and methods.3. Create a class which holds a pointer to the original entity class +

extra AD properties and methods - controller approach.4. Modify original entities in a way of C++ templates.5. Typedef approach - succeeded!

Mladen Banovic 6 / 17 15.09.2016

Coding issues

Coding issuesThere was a lot of code modification introduced because theadouble objects can not just fit everywhere, i.e.:

I Converting a real value to integer.I Arguments for calling the external functions that are not part of

OCCT must remain as doubles.I Input/Output system: adouble objects can currupt the files.I Using C functions for memory management (malloc, free,

memcpy, memset) will cause the run-time exceptions.

Testing original (primal) OCCT functionalityAutomated Testing System of OCCT has been executed aftersuccessful ADOL-C integration, with the final results:

Tests marked: OK Tests marked failed: FAILED Success rate11,306 374 97%

Mladen Banovic 7 / 17 15.09.2016

Coding issues

Coding issuesThere was a lot of code modification introduced because theadouble objects can not just fit everywhere, i.e.:

I Converting a real value to integer.I Arguments for calling the external functions that are not part of

OCCT must remain as doubles.I Input/Output system: adouble objects can currupt the files.I Using C functions for memory management (malloc, free,

memcpy, memset) will cause the run-time exceptions.

Testing original (primal) OCCT functionalityAutomated Testing System of OCCT has been executed aftersuccessful ADOL-C integration, with the final results:

Tests marked: OK Tests marked failed: FAILED Success rate11,306 374 97%

Mladen Banovic 7 / 17 15.09.2016

CAD sensitivities

CAD sensitivitiesExample of derivatives calculated using the vector mode

Mladen Banovic 8 / 17 15.09.2016

Performance tests

Performance tests (I)The average values of total computational time required for theU-bend construction.

g++ compiler v4.8.5

Original sources AD sources - 1 dir. AD sources - 96 dir.Avg. time (sec) 0.037 0.340 2.127Run-time ratio 9.13 57.07

Primal with operator overloading: 0.269 sec; run-time ratio: 7.21.

clang++ compiler v3.7.0

Original sources AD sources - 1 dir. AD sources - 96 dir.Avg. time (sec) 0.035 0.298 1.833Run-time ratio 8.59 52.75

Primal with operator overloading: 0.216 sec; run-time ratio: 6.20.

Mladen Banovic 9 / 17 15.09.2016

Performance tests

Performance tests (I)The average values of total computational time required for theU-bend construction.

g++ compiler v4.8.5

Original sources AD sources - 1 dir. AD sources - 96 dir.Avg. time (sec) 0.037 0.340 2.127Run-time ratio 9.13 57.07

Primal with operator overloading: 0.269 sec; run-time ratio: 7.21.

clang++ compiler v3.7.0

Original sources AD sources - 1 dir. AD sources - 96 dir.Avg. time (sec) 0.035 0.298 1.833Run-time ratio 8.59 52.75

Primal with operator overloading: 0.216 sec; run-time ratio: 6.20.

Mladen Banovic 9 / 17 15.09.2016

Performance tests

Run-time ratios

0 8 16 24 32 40 48 56 64 72 80 88 96Number of directions (p)

0

20

40

60

80

100

120

140

160R

un-t

ime r

ati

o

1 + 1.5p1 + 1pg++ v4.8.5clang++ v3.7.0

Mladen Banovic 10 / 17 15.09.2016

Memory requirements

Memory requirements

0 8 16 24 32 40 48 56 64 72 80 88 96Number of directions

0

50

100

150

200

250

300

350Tota

l m

em

ory

consu

mpti

on [

MB

]

Mladen Banovic 11 / 17 15.09.2016

CAD optimisation loop

CAD, set α

Mesh on CAD

Run primal CFD

Run adjoint CFD

CFD Sensitivity

CAD sensitivity

dJdα = dJ

dXS

dXSdα

FINAL CAD

α(n+1) =A(α(n), dJ

dα (α(n)))

Update CAD αn+1,Surface Movement

Update SurfaceMesh, αn+1

Volume MeshPerturbation

STAMPS solverCFD Solver from QMULDiscrete Adjoint ADSpring/Elasticity AnalogyMesh Perturbation

OCCT ADBuild Shapes (α)Find Mesh on CADParametric Mesh (u, v)Sensitivities in (u, v)

Optimiser

Steepest Descent

Mladen Banovic 12 / 17 15.09.2016

CAD optimisation loop

CAD optimisation loopGradient verificationsXSensitivities in STAMPS and OCCT were verified with FD

CAD sensitivity comparison

Flow conditionsIncompressible flow, U0 = 8.8, Re=43830, ρ = 1.204kg/m3,µ = 1.813 × 10−5kg/(sm), P = 101300Pa and T = 293.15K

Mladen Banovic 13 / 17 15.09.2016

Optimisation results

Optimisation resultsCost function:Total pressure lossesbetween inlet/outlet

Designimprovement:16%

Mladen Banovic 14 / 17 15.09.2016

Optimisation results

Optimisation results (II)

Total pressure

Velocity change

Mladen Banovic 15 / 17 15.09.2016

Conclusions

Conclusions

Current stateX Differentiated full CAD-systemX Coupled with adjoint CFDX CAD available at each iteration step

Future steps7 Validate derivative calculation of differentiated OCCT by buildingnew test cases.7 Integrate the ADOL-C trace functionality into OCCT in order to usethe reverse mode of AD at appropriate places.

Mladen Banovic 16 / 17 15.09.2016

Acknowledgements

Research is conducted within IODA1 projectIndustrial Optimal Design using Adjoint CFD

1http://ioda.sems.qmul.ac.uk/ Grant Agreement No. 642959.

Mladen Banovic 17 / 17 15.09.2016