Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
design_module::design_t Type Reference

The topology type, which is used to describe the designs in topology optimization. More...

Inheritance diagram for design_module::design_t:
Collaboration diagram for design_module::design_t:

Public Member Functions

procedure, pass(thisinit (this, json, case)
 Initialize the topology.
 
procedure, pass(thisfree (this)
 Free the topology.
 
procedure, pass(thispreprocess_ (this, t, tstep)
 Update resistance based on the design.
 
procedure, pass(thiscompute_ (this, t, tstep)
 Update the design.
 
procedure, pass(thisupdate (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
 

Detailed Description

Definition at line 59 of file design.f90.

Member Function/Subroutine Documentation

◆ compute_()

procedure, pass(this) design_module::design_t::compute_ ( class(design_t), intent(inout this,
real(kind=rp), intent(in t,
integer, intent(in tstep 
)
Todo:
This is currently just a dummy function. We need to implement the actual topology optimization algorithm here.

Definition at line 92 of file design.f90.

◆ free()

procedure, pass(this) design_module::design_t::free ( class(design_t), intent(inout this)

Definition at line 86 of file design.f90.

◆ init()

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 
)
Parameters
[in,out]thisThe topology
[in]neko_caseThe neko case
[in]resolutionThe resolution of the topology

Definition at line 83 of file design.f90.

◆ preprocess_()

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.

Parameters
[in]neko_caseThe neko case

Definition at line 89 of file design.f90.

◆ update()

procedure, pass(this) design_module::design_t::update ( class(design_t), intent(inout this,
real(kind=rp), intent(in t,
integer, intent(in tstep 
)
Todo:
This is currently just a dummy function. We need to implement the actual topology optimization algorithm here.

Definition at line 95 of file design.f90.

Member Data Documentation

◆ chi

class(field_t), pointer, public design_module::design_t::chi

Definition at line 63 of file design.f90.

◆ converged

logical design_module::design_t::converged = .false.

Definition at line 76 of file design.f90.

◆ design_changed

logical design_module::design_t::design_changed = .false.

Definition at line 78 of file design.f90.

◆ design_domain

class(point_zone_t), pointer, private design_module::design_t::design_domain => null()
private

Definition at line 67 of file design.f90.

◆ design_field

class(field_t), pointer, public design_module::design_t::design_field

Definition at line 65 of file design.f90.

◆ design_size

integer design_module::design_t::design_size

Definition at line 73 of file design.f90.

◆ perm_0

real(kind=rp), private design_module::design_t::perm_0
private

Definition at line 70 of file design.f90.

◆ perm_1

real(kind=rp), private design_module::design_t::perm_1
private

Definition at line 70 of file design.f90.

◆ perm_penalty

real(kind=rp), private design_module::design_t::perm_penalty
private

Definition at line 70 of file design.f90.

◆ total_size

integer design_module::design_t::total_size

Definition at line 73 of file design.f90.


The documentation for this type was generated from the following file: