109def heterodeform_bilayer(
116 Apply in-plane deformation gradients to the two layers of a bilayer.
118 Default behavior: no deformation unless provided explicitly.
124 F_bottom : np.ndarray or None
125 Deformation gradient for the bottom layer.
126 F_top : np.ndarray or None
127 Deformation gradient for the top layer.
128 new_name : str or None
129 Optional name for the deformed bilayer.
134 New bilayer with deformed layers. Its bicrystal is constructed once
135 during Bilayer2D initialization.
142 bottom_layer = bilayer.bottom_layer.deform(F_bottom)
143 top_layer = bilayer.top_layer.deform(F_top)
146 name=bilayer.name
if new_name
is None else new_name,
148 bottom_layer=bottom_layer,
149 interlayer_spacing=bilayer.interlayer_spacing,
152def make_ab_graphene_bilayer(interlayer_spacing) -> Bilayer2D:
154 AB-stacked bilayer graphene reference configuration.
164 top_layer = make_graphene_layer_from_basis(
168 (1.0 / 3.0, 2.0 / 3.0),
172 bottom_layer = make_graphene_layer_from_basis(
173 name=
"graphene_bottom",
176 (2.0 / 3.0, 1.0 / 3.0),
183 bottom_layer=bottom_layer,
184 interlayer_spacing=interlayer_spacing,
188def make_aa_prime_mos2_bilayer(interlayer_spacing) -> Bilayer2D:
190 AA'-stacked bilayer MoS2 reference configuration.
204 top_layer = make_mos2_layer_from_basis(
207 (
"S", (0.0, 0.0), 0.0 * t, 1, -0.42),
208 (
"S", (0.0, 0.0), 1.0 * t, 2, -0.42),
209 (
"Mo", (1.0 / 3.0, 2.0 / 3.0), 0.5 * t, 3, 0.84),
213 bottom_layer = make_mos2_layer_from_basis(
216 (
"S", (1.0 / 3.0, 2.0 / 3.0), 0.0 * t, 1, -0.42),
217 (
"S", (1.0 / 3.0, 2.0 / 3.0), 1.0 * t, 2, -0.42),
218 (
"Mo", (0.0, 0.0), 0.5 * t, 3, 0.84),
223 name=
"mos2_aa_prime",
225 bottom_layer=bottom_layer,
226 interlayer_spacing=interlayer_spacing,