|
Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
|
Problem
aim to solve one step of : min F s.t. C <= 0
proceedure sensitivity (both F and C)
Contains:
current design (design x)
Objective - (object) general
- determine objective function value (function) F
- Compute dFdx
instantiated from objective:
easy_one - (derived from objective)
- determine objective function value (function) F
- Compute dFdx (from design variable)
eg, volume constraints
fluid/adjoint - (derived from objective)
contains:
fluid
- init: compute objective
adjoint
- init: adjoint forcing
proceedures
- determine objective function value (function) F
- Compute dFdx
* determine adjoint forcing (source term)
* compute sensitivity (proceedure)
We also need something similar for constraints
objective F
constraints C[:]
Should be able to:
compute F
compute C
compute dF/dx
compute dC[i]/dx
"find min F s.t. ..."
type(case_t) :: C
type(adjoint_obj) :: adj
!
call init_problem(P)
!
call user_setup(C%usr)
call neko_init(C)
call init_problem_from_json(P)
! init design
! init F
call adj%init(C)
! init C
! loop all constraints
know C[i]
! compute F and dF/Dx
! compute C[i] and dC[i]/dx
!------------------------
call solve()
"steady"
call neko_solve(C)
call solve_adjoint(adj)
call sensitivity
or
something else....
!----------------------
call neko_finalize(C)
call mma(P)