Neko-TOP
A portable framework for high-order spectral element flow toplogy optimization.
Loading...
Searching...
No Matches
mapping_fctry.f90
1
34!
36submodule(mapping) mapping_fctry
37 use utils, only: neko_type_error
39 use pde_filter, only: pde_filter_t
43 use json_utils, only : json_get
44 use utils, only : concat_string_array, neko_error
45 implicit none
46
47 ! List of all possible types created by the factory routine
48 character(len=20) :: MAPPING_KNOWN_TYPES(5) = [character(len=20) :: &
49 "linear", &
50 "PDE_filter", &
51 "RAMP", &
52 "SIMP", &
53 "heaviside_mapping"]
54
55contains
56
60 module subroutine mapping_factory(object, json, coef)
61 class(mapping_t), allocatable, intent(inout) :: object
62 type(json_file), intent(inout) :: json
63 type(coef_t), intent(inout) :: coef
64 character(len=:), allocatable :: type_name
65
66 call json_get(json, "type", type_name)
67
68 select case (trim(type_name))
69 case ("linear")
70 allocate(linear_mapping_t::object)
71 case ("PDE_filter")
72 allocate(pde_filter_t::object)
73 case ("RAMP")
74 allocate(ramp_mapping_t::object)
75 case ("SIMP")
76 allocate(simp_mapping_t::object)
77 case ("heaviside_mapping", "heaviside_projection")
78 allocate(heaviside_mapping_t::object)
79 case default
80 call neko_type_error("Mapping function", type_name, mapping_known_types)
81 end select
82
83 ! Initialize
84 call object%init(json, coef)
85
86 end subroutine mapping_factory
87
88end submodule mapping_fctry
Smooth Heaviside mapping.
A linear mapping of coefficients.
Mappings to be applied to a scalar field.
Definition mapping.f90:36
A PDE based filter.
A RAMP mapping of coefficients.
A SIMP mapping of coefficients.
A linear mapping of coefficients $f(x) = f_{min} + (f_{max} - f_{min}) x$.
A PDE based filter mapping , see Lazarov & O. Sigmund 2010, by solving an equation of the form .
A RAMP mapping of coefficients This is the standard RAMP described in https://doi....
A SIMP mapping of coefficients.