Multidomain connections (panels.multidomain.connections)#

Connection between panel domains. Each panel domain has its own set of Bardell approximation functions. Below it is shown the connections currently supported.

kCBFycte#

Connection of type:

                     _
                      |
  || --> Flange       |
  ||                  |-> Can be used to model a stiffener
======  --> Base      |
                     _|

ycte indicates the connection exists at a constant \(y_1\) for panel 1 (base) and \(y_2\) for panel 2 (flange).

kCSB#

Connection of type:

======        ==> base
------        --> skin

Takes into account the offset between the two mid-surfaces.

kCSSxcte#

Connection of type:

__________
|        |
|        |      /^\ x2
|   S2   |       |
|        |   y2  |
|        |   <----
|________| (connection at x2=xcte2)
__________ (connection at x1=xcte1)
|        |
|        |      /^\ x1
|   S1   |       |
|        |   y1  |
|________|   <----

kCSSycte#

Connection of type:

           /-> (connection at y1=ycte1)
          /
         /  /->(connection at y2=ycte2)
_________| |_________
|        | |        |
|        | |        |
|   S1   | |   S2   |
|        | |        |
|________| |________|

    /^\ x1       /^\ x2
     |            |
 y1  |        y2  |
 <----        <----

Calculating Penalty Constants#

Function calc_kt_kr() is based on Ref [castro2017Multidomain] and uses a strain compatibility criterion to calculate penalty constants for translation (kt) and rotation (kr). The aim is to have penalty constants that are just high enough to produce the desired compatibility, but not too high such that numerical stability issues start to appear.

panels.multidomain.connections.calc_kt_kr(p1, p2, connection_type)#

Calculate translation and rotation penalty constants

For details on how to derive these equations, see [castro2017Multidomain] (MD paper eqn 34-40)

Parameters:
p1Panel

First panel.

p2Panel

Second panel.

connection_typestr
One of the types:
  • ‘xcte’

  • ‘ycte’

  • ‘bot-top’

  • ‘xcte-ycte’: to a 90° connection

  • ‘ycte-xcte’: to a 90° connection

Returns:
kt, krtuple

A tuple with both values.

Damaged connections were implemented by Nathan (2024) [nathan2024MSc] and the out-of-plane connectivity stiffness in the presence of a damage mapped using traction-separation law is calculated using calc_kw_tsl().

panels.multidomain.connections.calc_kw_tsl(pA, pB=None, tsl_type=None, k_i=10000.0, k_ipen=1000000.0, del_d=None, tau_o=67, G1c=1.12)#

Calculate out of plane stiffness of the damaged region (where the traction separation law exists)

Parameters:
pAShell

Top panel.

pBShell

Bottom panel.

tsl_typestring

Type of TSL to be used. Possible options are: ‘linear’ (no softening), or ‘bilinear’ (with linear softening).

k_ifloat

Pristine out-of-plane stiffness, in other words, when there is no damage.

k_ipenfloat

Out-of-plane penalty stiffness to prevent interpenetration between pA and pB.

del_dnp.ndarray

A 2D np.array() corresponding to out-of-plane separation field. This is the out of plane separation between panels, at each point of the input grid.

tau_ofloat

Traction at damage onset. The default value is in MPa units.

G1cfloat

Critical fracture energy release rate in mode I. The default value is in kJ/m^2 = N/mm units.

Returns:
kw_tslfloat

The out of plane stiffness, when tsl_type == 'bilinear', this is a map of stiffnesses at each point of the input grid.

dmg_indexnp.ndarray

The calculated damage at each point across the input grid. Note that this is only valid when tsl_type == 'bilinear'.