Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
|
The topology type, which is used to describe the designs in topology optimization. More...
Public Member Functions | |
procedure, pass(this) | init (this, json, case) |
Initialize the topology. | |
procedure, pass(this) | free (this) |
Free the topology. | |
procedure, pass(this) | preprocess_ (this, t, tstep) |
Update resistance based on the design. | |
procedure, pass(this) | compute_ (this, t, tstep) |
Update the design. | |
procedure, pass(this) | update (this, t, tstep) |
Update the topology. | |
Public Attributes | |
class(field_t), pointer, public | chi |
array describing the topology. | |
class(field_t), pointer, public | design_field |
array describing the topology. | |
integer | total_size |
Size parameters. | |
integer | design_size |
logical | converged = .false. |
Logical indicating if the design has converged. | |
logical | design_changed = .false. |
Indication if the design has changed. | |
Private Attributes | |
class(point_zone_t), pointer, private | design_domain => null() |
Pointer to the design domain. | |
real(kind=rp), private | perm_0 |
real(kind=rp), private | perm_1 |
real(kind=rp), private | perm_penalty |
Definition at line 59 of file design.f90.
procedure, pass(this) design_module::design_t::compute_ | ( | class(design_t), intent(inout) | this, |
real(kind=rp), intent(in) | t, | ||
integer, intent(in) | tstep | ||
) |
Definition at line 92 of file design.f90.
Definition at line 86 of file design.f90.
procedure, pass(this) design_module::design_t::init | ( | class(design_t), intent(inout) | this, |
type(json_file), intent(inout) | json, | ||
class(case_t), intent(inout), target | case | ||
) |
[in,out] | this | The topology |
[in] | neko_case | The neko case |
[in] | resolution | The resolution of the topology |
Definition at line 83 of file design.f90.
procedure, pass(this) design_module::design_t::preprocess_ | ( | class(design_t), intent(inout) | this, |
real(kind=rp), intent(in) | t, | ||
integer, intent(in) | tstep | ||
) |
This function updates the permeability based on the current design. This is done by interpolating the design and updating the pointwise permeability force.
From Andreasen et al. (2008) we have that the permeability is given by
\[ \kappa = \kappa_{0} + (\kappa_{1} - \kappa_{0})\phi(\mathbf{x}) \frac{\beta + 1}{\beta + \phi(\mathbf{x})}, \]
where \(\kappa_{0}\) and \(\kappa_{1}\) are the permeability at solid and fluid, respectively, \(\phi(\mathbf{x})\) is the design variable at point \(\mathbf{x}\), and \(\beta\) is a penalty parameter.
[in] | neko_case | The neko case |
Definition at line 89 of file design.f90.
procedure, pass(this) design_module::design_t::update | ( | class(design_t), intent(inout) | this, |
real(kind=rp), intent(in) | t, | ||
integer, intent(in) | tstep | ||
) |
Definition at line 95 of file design.f90.
Definition at line 63 of file design.f90.
logical design_module::design_t::converged = .false. |
Definition at line 76 of file design.f90.
logical design_module::design_t::design_changed = .false. |
Definition at line 78 of file design.f90.
Definition at line 67 of file design.f90.
Definition at line 65 of file design.f90.
integer design_module::design_t::design_size |
Definition at line 73 of file design.f90.
Definition at line 70 of file design.f90.
Definition at line 70 of file design.f90.
Definition at line 70 of file design.f90.
integer design_module::design_t::total_size |
Definition at line 73 of file design.f90.