Introduction
Designing flat sheets that can be made to deform into three-dimensional shapes is an area of intense research with applications in micromachines, soft robotics, and medical implants. Thus far, such sheets were designed to adopt a single target shape. In [1] we showed that through anisotropic deformation applied inhomogeneously throughout a sheet, it is possible to design a single sheet that can deform into multiple surface geometries upon different actuations. The key to our approach is development of an analytical method for solving this multivalued inverse problem. More explicitly; we rephrased the inverse design problem as an integrable system of partial quasilinear differential equations, whose solution are the sheet’s designable features.
Such sheets open the door to fabricating machines that can perform complex tasks through cyclic transitions between multiple shapes. As a proof of concept, we designed a simple swimmer capable of moving through a fluid at low Reynolds numbers.
Such sheets open the door to fabricating machines that can perform complex tasks through cyclic transitions between multiple shapes. As a proof of concept, we designed a simple swimmer capable of moving through a fluid at low Reynolds numbers.
A single uniaxial sheet, with N designable features ε, can be inverse designed to morph into N+1 target surface geometries.The inverse design of a specific system using this approach is straight-forward. One needs to (i) specify the set of designable features, and how they affect the deformation magnitudes in response to stimuli, (ii) select a compatible number of target surfaces to be obtained at specified actuation values, and (iii) choose initial conditions for the integration procedure.Using these inputs, the code [2] produces designs for the director and designable features ε.Example implementations of the code, where specific inverse problems are solved, are given in the sections below. The first section, reproduces a semblance of Figure (1) of [1], where a single sheet morphs into two surface geometries. The data given in this section is fully analytic and so it’s integration is swift.The second section, reproduces Figure (3) of [1], where a single sheet morphs into three surface geometries, in response to two independent stimuli. The data is given as a mesh, and so its integration may take a few hours.In both notebooks a diagonal integration scheme is implemented, allowing for both analytic and numerical specification of the surface geometries.All definitions should be cleared between running these two sections.[1] Itay Griniasty, Cyrus Mostajeran and Itai Cohen, Multi-valued inverse design: multiple surface geometries from one flat sheet, Phys. Rev. Lett. 127, 128001.[2] Itay Griniasty, Multi-surface inverse design: Calculating the designable properties of a uniaxial sheet (2021), https:// doi.org/10.5281/zenodo.5146071.
n
Comments
Comments
1. The system of partial differential equations for solving this inverse problem is published in [1].The Mathematica package, “uniaxialintegratorV2.wl”, contains definitions for functions that numerically integrate these equations. The code can be generically applied to inverse design any uniaxial sheet. However, it is effective in producing a solution with substantial coverage only when each designable feature, ε, affects only the deformation magnitude along or across the deformation’s anisotropic axis, denoted in the paper by the director, .
n
2. The current implementation of the diagonal integration scheme does not maximize the integrable (u,v) domain;
The underlying PDEs imply that the boundary is block diagonal in the (u,v) domain.
The current implementation realizes instead diagonal boundaries.
The solution’s coverage can then naturally be improved on by obtaining the theoretically predicted boundary of the domain.
The boundary may be optimized in future versions by introduction of varying step sizes and mesh refinement at singularities.
The underlying PDEs imply that the boundary is block diagonal in the (u,v) domain.
The current implementation realizes instead diagonal boundaries.
The solution’s coverage can then naturally be improved on by obtaining the theoretically predicted boundary of the domain.
The boundary may be optimized in future versions by introduction of varying step sizes and mesh refinement at singularities.
Inverse design 3 target surfaces
Inverse problem set up
Inverse problem set up
In[]:=
SetDirectory[NotebookDirectory[]];<<uniaxialintegratorV2`
Give material and surface properties
Designable features:
In[]:=
ϵ={ϵ1};
Deformation magnitude along and across the director:
In[]:=
λ1[epsilon_,lambda_]:=1λ2[epsilon_,lambda_]:=Exp[lambdaepsilon[[1]]];
Actuation values of the stimuli:
In[]:=
Λ={0,1,2};
Target geometries:
In[]:=
g1=DiagonalMatrix[{1,1}]&;g2={{1,0},{0,Sin[#[[1]]]^2}}&;g3=embeddingToMetric[{x,y,Exp[-(x^2+y^2/4)]},{x,y}]@@#&;gList={g1,g2,g3}
Out[]=
DiagonalMatrix[{1,1}]&,{{1,0},{0,}}&,embeddingToMetricx,y,Exp-+,{x,y}@@#1&
2
Sin[#1〚1〛]
2
x
2
y
4
g2 and g3 are derived in this example for a sphere and an anisotropic gaussian , respectively.
rrg[x_,y_]=x,y,Exp-
-
2
x
1
2
y
4
We then verify that the problem is hyperbolic, and can be substantially solved from initial data :
In[]:=
CheckSolverValidity[λ1,λ2,ϵ,Λ]
Go ahead
ϵ1 and p1initial conditions along v
Finally, we derive the propagation equations for the inverse design of the sheet:
In[]:=
propagation=propagationInverseEqns[{g1,g2,g3},λ1,λ2,ϵ,Λ];
and calculate where to assign the initial data for ϵ, along the initial u-curve or v-curve:
In[]:=
i12assignment=i12assign[λ1,λ2,ϵ,Λ]
Out[]=
{2}
Give initial conditions
Give initial conditions
Initial u and v curves, specified parametrically on the initial surface:
In[]:=
ucurve[t_]=t{1,0};vcurve[t_]=2{1-Cos[t],Sin[t]};
Initial positions and directors on the target surfaces:
In[]:=
initialpositions={ucurve[0],{Pi/2,0},{0,0}};initialdirectors=MapThread[normalizevec[#1,#2[#3]]&,{{D[ucurve[t],t]/.t0,{1,0},{1,0}},{g1,g2,g3},initialpositions}]
Out[]=
{{1,0},{1,0},{1,0}}
Initial values of the designable features ϵ, and their derivatives p and q, given as parametric functions:
In[]:=
epsinitial[t_]={1/2};pqinitial[t_]={1/2};
which are now collected
In[]:=
initialconditions={initialpositions,initialdirectors,epsinitial[t],pqinitial[t],ucurve[t],vcurve[t],gList[[1]],i12assignment};
We then test the initial conditions to verify that they are well posed at the origin:
In[]:=
testInitialData[propagation,initialconditions]
Propagation Equations and data at the origin are numeric
Out[]=
True
Diagonal integrate
Diagonal integrate
The inverse design problem is then integrated to obtain the fabrication data.
The data structure = Table[ {uv, r, n, α, β, ϵ, b, s, p, q}, {u,umax[[v]]}, {v,vmax}, {quad,4}]
Where quad - stands for the Cartesian quadrant.
u, and v are enumerated u and v curves.
uv={u-value,v-value};
r={{x1,y1},{x2,y2},...,{xm,ym}} = A list of 2d coordinates on the initial and target surfaces.
n={{n1x,n1y},{n2x,n2y},...,{nmx,nmy}} = A list of images of the director on the initial and target surfaces.
α = arclength along u on the initial sheet.
β = arclength along v on the initial sheet.
ϵ=list of designable features
b= bend of director field
s= splay of director field
= list of variations of ϵ along u.
= list of variations of ϵ along v.
The data structure = Table[ {uv, r, n, α, β, ϵ, b, s, p, q}, {u,umax[[v]]}, {v,vmax}, {quad,4}]
Where quad - stands for the Cartesian quadrant.
u, and v are enumerated u and v curves.
uv={u-value,v-value};
r={{x1,y1},{x2,y2},...,{xm,ym}} = A list of 2d coordinates on the initial and target surfaces.
n={{n1x,n1y},{n2x,n2y},...,{nmx,nmy}} = A list of images of the director on the initial and target surfaces.
α = arclength along u on the initial sheet.
β = arclength along v on the initial sheet.
ϵ=
{ϵ1,ϵ2,...,}=
ϵ
m-1
b= bend of director field
s= splay of director field
p={p1,p2,...,}
p
m-1
q={q1,q2,...,}
q
m-1
We now integrate the inverse problem with the following mesh setup:
maxdiag = maximal number of integration steps along each direction.
du = step size along u,
dv =stepsize along v,
signu (signv) = increase or decrease u (v);
maxdiag = maximal number of integration steps along each direction.
du = step size along u,
dv =stepsize along v,
signu (signv) = increase or decrease u (v);
In[]:=
intDiag[maxdiag_,signu_,signv_,du_,dv_]:=diagonalintegration[ucurve[t],vcurve[t],initialpositions,initialdirectors,epsinitial[t],pqinitial[t],λ1,λ2,Λ,gList,propagation,i12assignment,maxdiag,du,signu,dv,signv];
Build dataset:
ClearAll@@Table["data"<>ToString[i],{i,4}];ClearAll[result]ClearAll@@Table["vmax"<>ToString[i],{i,4}];ClearAll@@Table["umaxtab"<>ToString[i],{i,4}];datas=stringlist["data",4];umaxtabs=stringlist["umaxtab",4];vmaxs=stringlist["vmax",4];quads={{1,1},{-1,1},{-1,-1},{1,-1}};
Integrate
In[]:=
maxdiag=200;du=1/20;dv=1/20;(result=ParallelTable[intDiag[maxdiag,q[[1]],q[[2]],du,dv],{q,quads}];)//AbsoluteTimingMapThread[Set[{#1,#2,#3},result[[#4]]]&,{umaxtabs,vmaxs,datas,Range[4]}];
(kernel 5)
ustop at {21, 1}
(kernel 4)
ustop at {21, 1}
(kernel 6)
ustop at {31, 1}
(kernel 3)
ustop at {31, 1}
Out[]=
{49.8067,Null}
Plot Integrated Designable Elastic Features:
Plot Integrated Designable Elastic Features:
The director pattern to be fabricated is then:
In[]:=
Show[Table[Table[ListLinePlot[datas[[quad,;;umaxtabs[[quad,vv]],vv,2,1]]],{vv,1,vmaxs[[quad,1]],2}],{quad,4}],PlotRangeAll,PlotLabel->"U Curves",AxesLabel{"x","y"}]
Resulting 3D surfaces
Resulting 3D surfaces
The actuated surfaces then take the shapes:
Inverse design 4 target surfaces (including a face).
Face: facedata.wl interpretation
Face: facedata.wl interpretation
Figure 3 includes a face like surface.
The face is described by interpolating functions of its geometric properties as a function of the {x,y} Cartesian coordinates.
z coordinate: iz
Christoffel symbols: igammatry
Gaussian curvature: iK
The face is described by interpolating functions of its geometric properties as a function of the {x,y} Cartesian coordinates.
z coordinate: iz
Christoffel symbols: igammatry
Gaussian curvature: iK
Inverse problem set up
Inverse problem set up
Give material and surface properties
Designable features:
Deformation magnitude along and across the director:
Actuation values of the stimuli:
Target geometries:
Here we are integrating numerically specified surface geometries, and so we also supply the interpolated Gaussian curvatures and Christoffel symbols.
We then verify that the problem is hyperbolic, and can be substantially solved from initial data:
Finally, we derive the propagation equations for the inverse design of the sheet:
and calculate where to assign the initial data for ϵ, along the initial u-curve or v-curve:
Give initial conditions
Give initial conditions
Initial u and v curves, specified parametrically on the initial surface:
Initial positions and directors on the target surfaces:
Initial values of the designable features ϵ, and their derivatives p and q, given as parametric functions:
which are now collected
We then test the initial conditions to verify that they are well posed at the origin:
Diagonal integrate
Diagonal integrate
We now integrate the inverse problem with the following mesh setup:
maxdiag = maximal number of integration steps along each direction.
du = step size along u,
dv =stepsize along v,
signu (signv) = increase or decrease u (v);
maxdiag = maximal number of integration steps along each direction.
du = step size along u,
dv =stepsize along v,
signu (signv) = increase or decrease u (v);
Build dataset:
Integrate (this step is rather lengthy, with the current settings and a Mathematica 12.0 operating with a 2.6 GHz i7 core it takes a couple of hours):
Plot Integrated Designable Elastic Features:
Plot Integrated Designable Elastic Features:
The director pattern to be fabricated is then:
Resulting 3D surfaces
Resulting 3D surfaces
The actuated surfaces then take the shapes: