class FDM[source]
FDM(θ_min:float=1e-06,use_forward_differences:bool=True,assemble_tensors_when_passed_to_problem:bool=True,padding_depth:int=0) ::UnpaddedFDM
A PDE solver for linear elasticity that uses the finite differences method (FDM) with padding.
| Type | Default | Details | |
|---|---|---|---|
θ_min |
float |
1e-06 |
The minimal value in the stiffness matrix. For numerical reasons we can not allow 0s, since they may lead to singular matrices. |
use_forward_differences |
bool |
True |
Whether to use forward differences or central differences. |
assemble_tensors_when_passed_to_problem |
bool |
True |
Whether the PDE solver methods pre-assembles any tensors or arrays before solving the PDE for a concrete problem. |
padding_depth |
int |
0 |
The depth of the padding surrounding the design space. In some cases, it is recommended to increase the padding depth to 2 to improve results but also increase running time. |
--------------------------------------------------------------------------- NameError Traceback (most recent call last) Input In [1], in <cell line: 2>() 1 #export ----> 2 class FDM(UnpaddedFDM): 3 """ 4 A PDE solver for linear elasticity that uses the finite differences method (FDM) with padding. 5 """ 6 def __init__(self, θ_min:float=1e-6, # The minimal value in the stiffness matrix. For numerical reasons we can not allow 0s, since they may lead to singular matrices. 7 use_forward_differences:bool=True, # Whether to use forward differences or central differences. 8 assemble_tensors_when_passed_to_problem:bool=True, # Whether the PDE solver methods pre-assembles any tensors or arrays before solving the PDE for a concrete problem. 9 padding_depth:int=0 # The depth of the padding surrounding the design space. In some cases, it is recommended to increase the padding depth to 2 to improve results but also increase running time. 10 ): NameError: name 'UnpaddedFDM' is not defined
UnpaddedFDM.assemble_tensors[source]
UnpaddedFDM.assemble_tensors(problem:dl4to.problem.Problem)
Assembles all FDM tensors from the problem object that can be pre-built without knowledge of the density distribution θ. This may take some time but makes future PDE evaluations for this problem much faster.
| Type | Default | Details | |
|---|---|---|---|
problem |
dl4to.problem.Problem |
The problem for which the tensors should be assembled. |
FDM.solve_pde[source]
FDM.solve_pde(solution:dl4to.solution.Solution,p:float=1.0,binary:bool=False,get_padded:bool=False)
Solves the pde for solution and SIMP exponent p. Returns three torch.Tensor objects: displacements u, stresses σ and von Mises stresses σ_vm.
| Type | Default | Details | |
|---|---|---|---|
solution |
dl4to.solution.Solution |
The solution for which the PDE should be solved. | |
p |
float |
1.0 |
The SIMP exponent when solving the PDE. Should usually be left at its default value of 1.. |
binary |
bool |
False |
Whether the densities in the solution should be binarized before solving the PDE. |
get_padded |
bool |
False |
Whether the density should be padded before the PDE is solved. Takes a bit longer to solve, but is more accurate. |