+ Summary
+ In ferroelectric materials, the order parameter polarization can be
+ switched by an external electric field. Regions within ferroelectric
+ materials with uniform polarization are called domains, and the
+ boundaries between domains with differently aligned polarization
+ vectors are called domain walls (DWs). These domain walls, which are
+ only a few nanometers wide, possess unique properties with potential
+ technological applications. DWs show promise for nanoscale electronic
+ circuit elements and enable innovative design concepts because they
+ can be created, erased and moved using applied electric fields
+ (Bednyakov
+ et al., 2018;
+ Catalan
+ et al., 2012;
+ Meier,
+ 2015;
+ Meier
+ & Selbach, 2022). DWs can also replicate the functionality
+ of key electronic components such as diodes
+ (Whyte
+ & Gregg, 2015), transistors
+ (Mundy
+ et al., 2017), and random access memories (RAM)
+ (Sharma
+ et al., 2017).
+ Due to the nanoscale sizes and promising properties of DWs, there
+ has been significant interest in studying how to control and
+ manipulate them using atomistic simulations
+ (Schultheiß
+ et al., 2020;
+ Didrik
+ R. Småbråten et al., 2018;
+ Didrik
+ Rene Småbråten et al., 2020). However, developing atomic DW
+ structures is challenging and requires knowledge of the order
+ parameter and DW types in ferroelectric materials. DWs can be
+ ferroelectric, antiferroelectric, and/or ferroelastic, and they can
+ vary depending on the allowed symmetry of the ferroelectric material.
+ For instance, ferroelectric BiFeO
+
+ 3
+ exists at room temperature as a rhombohedrally distorted perovskite
+ with space group R3c and spontaneous polarization oriented along the
+ [111]
+
+ P
+ axis
+ (Ederer
+ & Spaldin, 2005;
+ Wang
+ et al., 2003). The symmetry constraints of having the
+ ferroelectric polarization in BiFeO
+
+ 3
+ along <111> directions gives four types of DWs across which the
+ polarization direction changes by 71°, 109°, or 180°
+ (Wang
+ et al., 2003). Similarly, other domain wall types have been
+ identified in other ferroelectric materials such as
+ BaTiO
+
+ 3
+ (Taherinejad
+ et al., 2012), PbTiO
+
+ 3
+ (Meyer
+ & Vanderbilt, 2002) and YMnO
+
+ 3
+ (Didrik
+ R. Småbråten et al., 2018), and in ferroelastics like
+ CaTiO
+
+ 3
+ (Barone
+ et al., 2014).
+ The DWBuilder code is designed as a
+ command-line tool to create DWs and interface structures from specific
+ input unit cell geometries, as described in detail in the README file
+ of the repository. The code comprises two main components: (i) a
+ domain wall builder for similar materials and (ii) a heterogeneous
+ interface builder for multi-material atomic interfaces. Figure 1
+ explains the structure and workflow of the
+ DWBuilder package.
+ The first part, handled by the scripts
+ dwbuilder.py and
+ dbuilder.py, produces domain walls by first
+ analyzing the input unit cell geometry and determining the space group
+ of the structure. The space group is identified using the open-source
+ Python library Pymatgen. If the space group matches the specified
+ type, the script offers a range of possible domain wall types and
+ ultimately creates the DW structures. If the space group of the input
+ structure does not match, the script allows you to choose a desired
+ space group type or manually define the domains by specifying lattice
+ vectors. To generate different domains separately, you can use
+ dbuilder.py to develop distinct domains, which
+ can be useful for bulk and surface calculations.
+ The second part of the code involves creating a heterogeneous
+ interface structure of multi-material compounds, which is handled by
+ the script hibuilder.py. This script requires
+ two input structures, named bulk1 and
+ bulk2. To develop compatible interfaces, you
+ must define the orientation relationship (OR) between the two bulk
+ phases. This definition is necessary to address any lattice and
+ angular mismatches that arise from differences in space groups and/or
+ atomic structures of the two phases.
+ Currently, the script cannot predict the ORs that would result in a
+ low lattice mismatch between the two bulk phases. However, theoretical
+ studies and methods such as edge-to-edge
+ (Zhang
+ & Kelly, 2005) and face-to-face
+ (Khalid,
+ 2020) matching techniques can help predict low lattice misfit
+ for interface construction. This script assumes that the user is
+ already familiar with the appropriate ORs to construct the interface
+ structure. For instance, the ORs of interfaces reported in referenced
+ papers
+ (Khalid
+ et al., 2019,
+ 2020,
+ 2021;
+ Khalid,
+ Friis, Ninive, Marthinsen, Ringdalen, et al., 2021) can be
+ replicated using this script. Additionally, the script can generate
+ atomic interfaces if you know the OR from experiments, and it can
+ predict the atomic interface structure and lattice mismatch between
+ the two bulk phases.
+
+ Structure of the DWBuilder
+ package.
+
+
+
+
+ Example 1:
+ The below example demonstrates the functionality and steps of the
+ dwbuilder.py script. Running the
+ dwbuilder script will perform the following
+ steps:
+
+
+ User Input:
+
+
+ Specify the script to run on the input structure.
+
+
+ Input the VASP format structure.
+
+
+
+
+ Space Group Determination:
+
+
+ The script determines the space group of the provided
+ structure.
+
+
+
+
+ Allowed Domain Wall Types:
+
+
+ Based on the determined space group, the script identifies
+ the allowed domain wall types.
+
+
+
+
+ Domain Wall and Supercell Size:
+
+
+ User inputs the desired domain wall size.
+
+
+ User specifies the supercell size for the domain wall
+ structures.
+
+
+
+
+ Final Domain Wall Structures:
+
+
+ The script generates the final domain wall structures.
+
+
+ It prints any lattice misfit information.
+
+
+
+
+ Figure 2 illustrates an example of P4mm
+ PbTiO
+
+ 3
+ and hexagonal manganite YMnO
+
+ 3
+ domain wall structures.
+ For proper ferroelectrics, such as perovskites
+ (PbTiO
+
+ 3,
+ BaTiO
+
+ 3,
+ KNbO
+
+ 3,
+ etc.), the user only needs to define the primitive unit cell
+ structure. The DWBuilder automatically
+ determines the space group and constructs the respective domains and
+ domain wall structures.
+ In certain cases, if the space group of the input structure does
+ not match the defined space group type of the domain walls, the user
+ can manually build the domains. This can be done by defining the
+ transformation matrix of each domain using either
+ hibuilder.py or by selecting the manual option
+ for domain selection in dwbuilder.py.
+ For hexagonal manganites, both domain structures are required to
+ build domain wall structures, as illustrated in Figure 2.
+
+