15 Dec.,2022

Illustration of the first three powers (from *top* to *bottom*) of the weight matrix, ** W** =

Full size image

We remark that, in general, evaluating the sums ** Gf**(

If the neighborhood shape and the weighting (possibly nonuniform) within each neighborhood is the same for all neighborhoods, then ** Wf**(

where \(\boldsymbol {\mathcal {F}}\) and \(\boldsymbol {\mathcal {F}}^{-1}\) represent the *d*-dimensional FFT and inverse FFT transform, respectively, ⊙ denotes the element-wise product, and ** w** is a vector that represents the filter kernel. The asymptotic computational complexity of FFT based filters is

It has already been established that sequential application of filters is a means to arrive at filters with desirable properties, see for instance the open and close filters introduced in topology optimization by Sigmund (2007).

Assume that we are given a family of *N*
*fW*-mean filters,

$$ \boldsymbol{\rho}^{(K)} = \boldsymbol{C}^{(K)}(\boldsymbol{\rho}). $$

The cascaded filter is naturally applied sequentially

where we set ** ρ**
(0) =

where we in the last step have defined

Existence of solutions to the continuous penalized minimum compliance problem in the case when a cascade of *fW*-mean filters is applied can be proven by following the same reasoning as in the proof in Section 2.

In the following section, we present numerical experiments performed in Matlab. For the cantilever beam experiments, we use a modified version of the 2*D* multigrid-CG topology optimization code by Amir et al. (2014). Below, we describe the major changes done to the code. First, we introduce a filter struct filterParam to hold all information needed to perform filtering and sensitivity modification, see Table 1. In the code excerpts, we have suppressed the struct name filterParam to increase the readability. For instance, we simply write N instead of writing filterParam.N. Listings 1–3 contain the new parts of code that needs to be included in order to use a filtering procedure composed of a cascade of generalized *fW*-mean filters. The Matlab code in Listing 1 computes the neighborhood sizes. The Matlab code in Listing 2 filters the vector rho by using the filterParam struct and the procedure outlined in Section 4.3. The observant reader notices that in fact it is not ** ρ**
(

filterParam

struct. Note that fieldN

and indexk

corresponds to the variablesFull size table

Matlab code that computes the neighborhood sizes

Full size image

Matlab code that filters the design variables by using a cascade of generalized *fW*-mean filters

Full size image

Matlab code that modifies the sensitivities with respect to the physical design following the description in Section 4.3

Full size image