1 Introduction

Composite T-joints are used in adhesive joints in applications such as bonding the spars to the wing skin and bulkheads together in aircraft fuselages and as structural components in wind turbine blades [1,2,3,4,5,6]. Often for these composite joints, strength is a limiting factor. They undergo a mix of direct and shear loads in service. This results in a large through-thickness stress component acting to cause delamination, leading to a catastrophic loss of mechanical performance.

3D woven composites are known for their increased through the thickness properties and ability to be woven in near net shape using weaving techniques such as bifurcations. For 3D profiled structures such as T and I-joints, the underlying fibre architecture contains features such as weft yarn crossover and entanglement at the bifurcation region which directly affect the mechanical performance [7]. However, it is difficult to predict the effect the weave pattern has on this performance, with weavers often relying on experience to generate the design pattern draft.

Until now, generation of the preform’s woven architecture has been a slow, manual process. The user needs to read and interpret the pattern draft information to predict the ordering of the yarns for themselves. Using TexGen, the University of Nottingham’s textile geometry pre-processor [8], a model can be automatically generated from this pattern. TexGen is used because of its easy-to-use graphical user interface (GUI) and, being freely available open-source software, it is possible to modify the code as needed. It has the ability to generate any possible yarn path and assign variable cross sections with an easy-to-use Python scripting interface and has built in voxel and octree voxel meshing [9] for finite element analysis. Other textile modelling software such as WiseTex [10] is commercially available with similar features, though it is written in proprietary code so that any changes to the code have to go through the vendors. WiseTex has a comprehensive GUI alongside XML input and output options alongside some possibilities for command line scripting, which while useful is less user friendly than TexGen’s Python scripting interface.

This model will be a flat idealised geometry with intersections. Nodes then need to be added to the weft yarns along the length, within the bifurcation region, to be able to shape the yarns as they wrap around each other. Cross sections of the yarns may need to be altered to prevent intersections of the yarns before the bifurcation transforms set out in [11] can be used.

The aim of this paper is to provide and demonstrate a new design tool using TexGen that will quickly and accurately model the geometry of such weaves by reading of the pattern draft for automatic pre-processing before finite element analysis (see Fig. 1).

Fig1
figure 1

(a) Initial TexGen model generated. (b) Final woven architecture

2 Near Net Shape Preforming

3D weaving on a standard Jacquard machine works by raising and lowering sheds attached to the warp and binder yarns and inserting the weft yarns orthogonally to cause the required interlacement. At the end of the process the loom has a beating action to push the weft yarns into place before moving further down the textile.

One of the major advantages of 3D weaving is the ability to produce weaves in near net shape. In the case of T-Joints, a plane within the textile that no binders cross is used to create a bifurcation. This means that the woven piece can be removed from the loom and the end opened out to form the net shape of a “T”.

For standard orthogonal weaves, a constant number of the warp sheds that create a layer are raised as weft is inserted. This creates the standard interlacement pattern with straight warp and weft yarns and binders looping over the top and bottom to create the interlacement. However, different numbers of warp yarns can be raised and lowered for each insertion to cause the weft yarns to shift their height as they transition between warp stacks.

The placing of the yarns at different heights can cause the yarns to cross over each other. This, along with the beating action of the loom, causes the yarns to wrap around each other so that they end up at the correct height. The part of the textile where this occurs is called the junction region. Predicting the order of the wrapping from the information in the pattern draft is important to being able to automatically generate models.

3 Reading the Pattern Draft

Weave designs are produced based on pattern drafts. These are a set of instructions to the loom, directing it to raise and lower the sheds as the wefts are inserted. Pattern drafts can be represented by a block of white and black tiles (see Fig. 2).

Fig. 2
figure 2

(a) Weave pattern draft. (b) Converted to matrix of 1’s and 0’s with Layer-ID

These can be replaced with a matrix of 1’s and 0’s where a 1 means the shed, and therefore the warp or binder, is lifted up and a 0 means that is down when the weft yarn is inserted across. For TexGen to be able to keep track of which shed needs to be raised, the first line of the weave pattern contains the layer ID information. Each number in the layer ID gives TexGen the layer in the warp stack, counting down from the top of the textile, so that the largest number is the number of warp layers in the textile. The number then returning to a 1 for the next warp stack or binder. Each line in the weave pattern is a weft insertion.

TexGen functions in a Python script can take this information and a string of numbers identifying the yarns and produce an idealised flat model of the weave. This is described in detail in [9] and can be found in the WeavePattern module included in TexGen. In the course of this work, the WeavePattern module was added to so that any binder yarn pattern could be read in for orthogonal type weaves. This allows the binder yarns to be placed so that they form the bifurcation necessary to form the T-Joint. This idealised model (see Fig. 3) is the starting point in the automatic generation set out in Sect. 5.

Fig. 3
figure 3

Idealised flat model produced by TexGen

If no weave pattern file is provided but the final positions of the weft yarns are known, these can be used to generate a weave pattern using the new WeftInsertion module to create the weft insertions based on the number of warp layers and stacks. This can be useful if, for instance, these design variables are produced during an optimisation process to produce a particular interlacement pattern, TexGen will also output a weave pattern file that can be used to manufacture the weave.

4 Determining the Order of Weft Yarn Interlacement

Depending on the weave pattern design, as weft yarns enter the junction region of the T-Joint, they may cross over and entangle with each other before leaving. Sometimes this also leads to them crossing from one half of the textile to the other as they move vertically between the warp stacks on either side of the junction region. The yarns in the model generated pass straight through each other and need moving laterally at the junction so that they no longer intersect (see Fig. 4). To determine the order in which to move the weft yarns laterally out of the textile, in other words the way they interlace, requires the vertical location of the yarns to be tracked. Using the information found in the weave pattern draft, this can be readily achieved.

Fig. 4
figure 4

(a) Initial geometry with weft yarns passing through one another. (b) Final flat geometry with interlacement order resolved

From the layer ID and the weft insertion information from the weave pattern, it is possible to obtain the start and end positions of the weft yarns in the warp stacks either side of the junction. This information is found for each weft insertion, or row in the pattern draft, by counting the number of warp ups in the stacks either side of the junction. For example, in Fig. 4, the yarn at the top of the textile, in green, with no warps up as it is inserted, will have a position of 0 and transitions to the bottom after the junction with all the warps up and a new position of 9.

If it is assumed that the order of weft insertion by the loom follows a “top down” approach, whereby the first weft insertion in the weaving pattern is at the top of the textile, and that the beating direction of the loom is known, then counting the number of warp ups for each yarn on either side of the junction and then comparing the number to previously inserted yarns will return the distance which they need to be moved. Switching to a “bottom up” approach or reversing the direction of beating, will yield the mirror twin of the textile with the same geometry but viewed from the other side.

The key principle to determine the order of weft interlacement is whether subsequently inserted weft yarns cross and end up in higher positions than the weft that is being inserted. Each yarn that is inserted after the current yarn and crosses above it will push and displace the current yarn further in the direction of the loom beating (see Fig. 5). When these crossing yarns are counted for each yarn, the numbers are used to order the displacement of the yarns by creating a map. A map is a key-value pair, also known in Python as a dictionary, which can be used to store linked information.

Fig. 5
figure 5

Three yarns wrapping each other. The arrow points in the direction of the loom beating. The blue yarn is inserted first, with the yarns following crossing above and pushing it in the beating direction

Using a map between the initial yarn positions and the final positions, it is possible to count the number of yarns that finish above the current one. The displacement of each yarn is then stored in another map along with the yarn index as a key.

5 Model Generation

Models are generated by making use of TexGen’s Python scripting interface to create the model and perform the adjustments needed to produce the final T-Joint weave. All the information required to create the initial geometry including the tow size and spacing are read in from the pattern draft. In an idealised model automatically generated by one of the TexGen 3DTextileWeave classes, nodes are generated at the points where the warp and weft nodes cross. An interpolation function then generates a yarn path between the nodes. Where the weft yarns pass through the textile thickness, in the junction region between subsequent nodes, this can result in interpolated paths which cause intersections with the warp yarns (see Fig. 6).

Fig. 6
figure 6

Textile model produced showing the weft yarn intersections with the warps as they transition in the junction region. Yarn nodes also shown

Starting from this idealised model, using the Python scripting, nodes are automatically added along the weft yarns at the junction region so that these intersections are removed (See Fig. 7). The position of the junction along the weft is determined for each yarn by checking whether the next node along is at the same height in the textile.

Fig. 7
figure 7

(a) Weft yarns shaped over warp yarns in the junction region. (b) Magnified image of the added nodes shaping over the warp

Extra nodes are added to the weft yarns at the mid-section of the junction region, which are then used to assign a new position based on how far out the yarn is pushed by subsequent weft yarn insertions. This new position can be read from the map created in Sect. 4. These nodes are assigned circular cross sections to reflect the deformation of the yarns as seen in CT data slices (see Fig. 8).

Fig. 8
figure 8

CT slices from woven T-Joint, showing the weft yarn configuration at the junction region as they crossover

The yarns can also be seen to arrange themselves in a zigzag pattern at the junction region. This is replicated in the model by slightly offsetting the position of odd and even numbered yarns from each other when viewing along the y-axis (See Fig. 9).

Fig. 9
figure 9

Weft yarns offset from each other so that they nest in a more realistic pattern

Using the above methodology means that all the yarns that are pushed out in the direction of the beating. In reality, they would be centred with the tension in the yarns causing them to distribute themselves symmetrically either side of the central yarn path axis. The yarns are re-centred into the correct position by a translation of the nodes.

Finally, a bifurcation transform as set out in [7] is used to translate the nodes so the weave reflects the final T shape form. From here a domain around the model is created and the model can be meshed for finite element analysis.

6 Demonstration Models

To demonstrate the capability of the method described above, several models were automatically generated and are included below. Each has 10 weft yarns and 9 warp yarns in a stack.

As can be seen from the images (see Fig. 10), a wide range of weave architecture can be modelled using this method. The first weave has no crossover between the yarns and no transitioning over at the junction region. The second has total crossover between the yarns and every yarn transitions to the opposite half of the textile. The third weave has one half of the textile crossing each other with the yarns all transitioning across the junction. The final weave has all the yarns crossing each other but none of them transition into the other half of the textile.

Fig. 10
figure 10

Four automatically generated T-Joint models

7 Summary and Future Work

A tool was described to automatically generate complete T-Joint models from weaving patterns, requiring a method to find the order of weft yarn interlacement. This provides the ability to quickly produce high quality geometric models from weave pattern designs. Additions to the software include improvements to the ability to read patterns of orthogonal weaves by being able to place the binders to form the bifurcation, and the scripts that take the information from the weave pattern and generate the final woven geometry of the T-Joint. Examples of the models produced were shown.

The aim is to use the ability to automatically generate T-Joint models to find optimum weaving patterns. The automatically generated models will be meshed, surfaces between the yarns will be inserted automatically and validated finite element analyses will be carried out as part of an optimisation process.