© C. Lázaro, Universidad Politécnica de Valencia, 2015

Form finding of planar flexible rods (7)

Refinement of 2DRodFF_6


In [1]:
import numpy as np
import matplotlib
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
%matplotlib inline

In [2]:
import scipy.special as sp
import scipy.optimize

1 Form-finding tool for a single rod


In [3]:
def omegaDeltaomega(muA, muB, flag, k):
    if (abs(muA)<1E-8 and abs(muB)<1E-8):
        omega_0 = -.5*np.pi
        Deltaomega_0 = np.pi
    else:
        if (muA >= 0):
            omega_0 = np.arccos(np.pi*muA/2./k)                                  # OK
            Deltaomega_0 = np.arccos(np.pi*muB/2./k) - omega_0                   # OK
            omega_1 = -np.arccos(np.pi*muA/2./k)                                 # OK
            Deltaomega_1 = np.arccos(np.pi*muB/2./k) - omega_1                   # OK
        else:
            omega_1 = np.arccos(np.pi*muA/2./k) - 2*np.pi
            omega_0 = -np.arccos(np.pi*muA/2./k)                                 # OK
            if (muB >= 0):
                Deltaomega_1 = -np.arccos(np.pi*muB/2./k) - omega_1
                Deltaomega_0 = -np.arccos(np.pi*muB/2./k) - omega_0              # OK
            else:
                Deltaomega_1 = -np.arccos(np.pi*muB/2./k) - omega_1
                Deltaomega_0 = -np.arccos(np.pi*muB/2./k) - omega_0              # OK
        
    if (flag == 0):
        #print('omega_0 = {0:.5f},    Deltaomega_0 = {1:.5f}'.format(omega_0, Deltaomega_0))
        return(omega_0, Deltaomega_0)
    else:
        #print('omega_1 = {0:.5f},    Deltaomega_1 = {1:.5f}'.format(omega_1, Deltaomega_1))
        return(omega_1, Deltaomega_1)

In [4]:
def lmbdk(muA, muB, flag, k):
    wA, Deltaw = omegaDeltaomega(muA, muB, flag, k)
    Deltaxi = (2*(sp.ellipeinc(wA+Deltaw,k**2) - sp.ellipeinc(wA,k**2)) - (sp.ellipkinc(wA+Deltaw,k**2) - sp.ellipkinc(wA,k**2)))/np.pi
    Deltaeta = -2*k*(np.cos(wA+Deltaw) - np.cos(wA))/np.pi
    lmbd = np.sqrt(Deltaxi**2 + Deltaeta**2)
    return(lmbd)

In [5]:
class F:
    def __init__(self, muA, muB, lmbdAB, flag):
        self.muA = muA
        self.muB = muB
        self.lmbdAB = lmbdAB
        self.flag = flag
        
    def __call__(self, k):
        lmbd = lmbdk(self.muA, self.muB, self.flag, k)
        return(self.lmbdAB - lmbd)

In [6]:
class Elastica:
    def __init__(self, gammaA=None, gammaB=None, R=None, MA=None, MB=None, EI=None):
        self.gammaA = gammaA
        self.gammaB = gammaB
        self.beta = np.angle(gammaB - gammaA)
        
        self.R = R
        self.MA = MA
        self.MB = MB
        self.EI = EI
        
        self.dAB = np.absolute(gammaB - gammaA)        # Distance between rod end-sections
        self.S = (MA - MB)/self.dAB                    # Shear force S (perpendicular to R)
        self.P = - np.sqrt(R**2 + self.S**2)           # Invariant compressive force
        self.lcrit = np.pi*np.sqrt(EI/abs(self.P))     # Critical length
        
        self.lmbdAB = self.dAB/self.lcrit              # Normalized distance
        self.muA = MA/abs(self.P)/self.lcrit           # Adimensional moments
        self.muB = MB/abs(self.P)/self.lcrit
        
        self.flag = 0
        
        self.k = None                                  # k parameter, to be computed
        self.HmodP = None                              # H/|P| = -cos(theta_0)
        
        self.alpha = None
        self.phiA = None
        self.phiB = None
    
    def data(self):
        print(' dAB = {0:8.4f}         lcrit = {1:8.4f} m'.format(self.dAB, self.lcrit))
        print('   R = {0:8.4f} kN          S = {1:8.4f} kN'.format(self.R, self.S))
        #print('   P = {0:8.4f} kN'.format(self.P))
        #print('lambdaAB = {1:8.4f}'.format(self.lcrit, self.lmbdAB))
        print('  MA = {0:8.4f}            MB = {1:8.4f}'.format(self.MA, self.MB))
        print(' muA = {0:8.4f}           muB = {1:8.4f}'.format(self.muA, self.muB))
    
    def compute_k(self):
        muA = self.muA
        muB = self.muB
        lmbdAB = self.lmbdAB
        flag = self.flag
        
        if (abs(muA)<1E-8 and abs(muB)< 1E-8):
            kmin = 0.
        else:
            kmin = max(np.pi*abs(muA)/2., np.pi*abs(muB)/2.) # Lowest possible value for k
        print('kmin = {0:.5f}'.format(kmin))
        
        rng_k = np.arange(kmin, 1., 0.05)
        rng_f = []
        flag = 0
        print('flag = {}'.format(flag))
        i = 0
        for k in rng_k:
            # print(i)
            lmbd = lmbdk(muA, muB, flag, k)
            f = lmbdAB - lmbd
            rng_f.append(f)
            # print('k = {0:.5f},    lmbd = {1:.5f},    f = {2:.5f},'.format(k, lmbd, f))
            i += 1
        rng_signf = np.sign(np.asarray(rng_f))
        rng_index = rng_signf[:-1] + rng_signf[1:]
        rng_index = rng_index.tolist()
        #print(rng_index)
        
        if 0. in rng_index:
            index00 = rng_index.index(0.)
            index01 = len(rng_index) - (rng_index[::-1]).index(0.) - 1
            #print(index00, index01)
        else:
            rng_f = []
            flag = 1
            print('flag = {}'.format(flag))
            i = 0
            for k in rng_k:
                #print(i)
                lmbd = lmbdk(muA, muB, flag, k)
                f = lmbdAB - lmbd
                rng_f.append(f)
                print('k = {0:.5f},    lmbd = {1:.5f},    f = {2:.5f},'.format(k, lmbd, f))
                i += 1
            rng_signf = np.sign(np.asarray(rng_f))
            rng_index = rng_signf[:-1] + rng_signf[1:]
            rng_index = rng_index.tolist()
            #print(rng_index)
            
            index00 = rng_index.index(0.)
            index01 = len(rng_index) - (rng_index[::-1]).index(0.) - 1
            #print(index00, index01)        
                
        HmodP00 = -np.cos(2*np.arcsin(rng_k[index00]))
        HmodP01 = -np.cos(2*np.arcsin(rng_k[index01]))
        #print('H/|P|00 = {0:.5f},    H/|P|01 = {1:.5f}'.format(HmodP00, HmodP01))
        if (index00==index01):
            index0 = index00
        else:
            if (HmodP00<=HmodP01):
                index0 = index00
            else:
                index0 = index01
        #print(index0)
        
        ka = rng_k[index0]
        kb = rng_k[index0+1]
        #print('ka = {0:.5f},    kb = {1:.5f}'.format(ka, kb))
        
        f = F(muA, muB, lmbdAB, flag)
        self.k = scipy.optimize.brentq(f, ka, kb)    # Solve for k
        self.HmodP = -np.cos(2*np.arcsin(self.k))
        self.flag = flag
        print('k = {0:.5f},    H/|P| = {1:.5f}'.format(self.k, self.HmodP))
        print
        
    def compute_Config(self):
        gammaA = self.gammaA
        beta = self.beta
        muA = self.muA
        muB = self.muB
        lcrit = self.lcrit
        flag = self.flag
        try:
            k = float(self.k)
        except ValueError:
            raise ValueError('Method .compute_k has to be executed first')
                    
        nVertex = 101
        (wA, Deltaw) = omegaDeltaomega(muA, muB, flag, k)
        if Deltaw<0:
            wA = -wA
            Deltaw = -Deltaw
        rng_w = np.linspace(wA, wA+Deltaw, nVertex)
        
        rng_zeta = []
        rng_xi = []
        rng_eta = []
        for w in rng_w:
            zeta = (sp.ellipkinc(w,k**2) + sp.ellipk(k**2))/np.pi
            xi = 2*(sp.ellipeinc(w,k**2) + sp.ellipe(k**2))/np.pi - zeta
            eta = -2*k*np.cos(w)/np.pi
            rng_zeta.append(zeta)
            rng_xi.append(xi)
            rng_eta.append(eta)
        rng_xi = np.asarray(rng_xi)
        rng_eta = np.asarray(rng_eta)

        alpha = np.arctan2(rng_eta[-1]-rng_eta[0], rng_xi[-1]-rng_xi[0])
        print('beta = {0:.5f}    alpha = {1:.5f}'.format(beta, alpha))
        rng_x = gammaA.real + np.cos(beta - alpha)*lcrit*(rng_xi - rng_xi[0]) - np.sin(beta - alpha)*lcrit*(rng_eta - rng_eta[0])
        rng_y = gammaA.imag + np.sin(beta - alpha)*lcrit*(rng_xi - rng_xi[0]) + np.cos(beta - alpha)*lcrit*(rng_eta - rng_eta[0])
        
        phiA = 2*np.arcsin(k*np.sin(wA)) + beta - alpha
        phiB = 2*np.arcsin(k*np.sin(wA + Deltaw)) + beta - alpha
        print('phiA = {0:.5f}    phiB = {1:.5f}'.format(phiA, phiB))
        
        self.alpha = alpha
        self.phiA = phiA
        self.phiB = phiB
        
        #return(rng_xi, rng_eta)
        return(rng_x, rng_y)
    
    def plot(self):
        fig = plt.figure(figsize=(9,9))
        ax = fig.gca(aspect='equal')
        
        (x, y) = self.compute_Config()
        ax.plot(x, y, color ='b')
        ax.grid()
        ax.set_xlabel(r'$x$')
        ax.set_ylabel(r'$y$')

In [7]:
test_element = Elastica(gammaA=complex(0.0, 0.0), gammaB=complex(5.2318, 0.), R=-26.1588, MA=-16.2602, MB=-84.6883, EI=500.)

In [8]:
test_element.data()


 dAB =   5.2318         lcrit =  12.9897 m
   R = -26.1588 kN          S =  13.0793 kN
  MA = -16.2602            MB = -84.6883
 muA =  -0.0428           muB =  -0.2229

In [9]:
test_element.compute_k()


kmin = 0.35016
flag = 0
k = 0.35323,    H/|P| = -0.75045


In [10]:
test_element.plot()


beta = 0.00000    alpha = 0.46364
phiA = 0.24462    phiB = -0.37069

2 Complex force densities

The 2D formfinding equations in complex form are

$$\mathbf{D}_l = \mathbf{C}_l^{\mathsf{T}} \,\mathbf{P}\,\mathbf{C}_l$$$$\mathbf{D}_f = \mathbf{C}_l^{\mathsf{T}} \,\mathbf{P}\,\mathbf{C}_f $$$$\mathbf{\gamma}_l = \mathbf{D}_l^{-1} \bigl( \mathbf{\phi}_l - \mathbf{D}_f \,\mathbf{\gamma}_f \bigr)$$

Where the diagonal elements of the force density matrix are the complex force densities $$q_{IJ} = r_{IJ} + i \,s_{IJ}$$ $r_{IJ} = R_{IJ}/d_{IJ}$ is the tension (compression) tension density and $s_{IJ} = S_{IJ}/d_{IJ}$ the transverse force density.
$\mathbf{C}_l$, $\mathbf{C}_f$ are the connectivity matrixes.


In [11]:
class StructuralElement:
    def __init__(self, startNode, endNode, complexq):
        self.startNode = startNode
        self.endNode = endNode
        self.complexq = complexq
        
        self.gammaA = None
        self.gammaB = None
        self.dAB = None
        self.R = None
        self.S = None
        self.DeltaM = None
        self.MA = None
        self.MB = None
        
        self.EI = 500.
        
    def setActiveParams(self, gammaA, gammaB):
        self.gammaA = gammaA
        self.gammaB = gammaB
        self.dAB = np.absolute(gammaB - gammaA)
        
        self.R = self.complexq.real*self.dAB
        self.S = self.complexq.imag*self.dAB
        self.DeltaM = - self.S*self.dAB
        
    def setEndMoments(self, node, M):
        try:
            DeltaM = float(self.DeltaM)
        except ValueError:
            raise ValueError('Method .setActiveParams has to be executed first')
            
        if node=='start':
            self.MA = M
            self.MB = self.MA + self.DeltaM
        else:
            self.MB = M
            self.MA = self.MB - self.DeltaM

In [135]:
# Input data

# Total number of nodes
NN = 6    

# Nodes
indexFreeNode = [1, 2]
indexFixedNode = [0, 3, 4, 5]
gammaF = np.array([
complex(-5.0, 0.),
complex(5.0, 0.),
complex(0., 5.0),   
complex(0., -5.0)
])
NF = len(gammaF)                                # Number of fixed nodes
print('Fixed nodes')
print(gammaF)
print

# Structural Members
NABR = 1                                        # Number of active bending rods
rng_activeBendingRod = [None]*NABR
# Active Members
rng_activeBendingRod[0] = []
rng_activeBendingRod[0].append(StructuralElement(0, 1, complex(-5.,  4.7895)))
rng_activeBendingRod[0].append(StructuralElement(1, 2, complex(-7.5, -6.6428)))
rng_activeBendingRod[0].append(StructuralElement(2, 3, complex(-5.,  4.7895)))
# Tension members
rng_axialMember = []
rng_axialMember.append(StructuralElement(1, 4, 7.5))
rng_axialMember.append(StructuralElement(2, 5, 7.5))

# Number of members
MMA = 0
for activeBendingRod in rng_activeBendingRod:
    MMA += len(activeBendingRod)                 # Bending active members
MMT = len(rng_axialMember)                       # Tension active members
MM = MMA + MMT

# Connectivity matrix
C = np.zeros((MM, NN))
i = 0
for activeBendingRod in rng_activeBendingRod:
    for activeElement in activeBendingRod:
        C[i, activeElement.startNode] = 1
        C[i, activeElement.endNode] = -1
        i += 1
for axialMember in rng_axialMember:
    C[i, axialMember.startNode] = 1
    C[i, axialMember.endNode] = -1
    i += 1

CL = C[:, indexFreeNode]
CF = C[:, indexFixedNode]
print('Connectivity matrix')
print(CL)
print(CF)
print

# Force densities in kN/m corresponding to every element
q = []
for activeBendingRod in rng_activeBendingRod:
    for activeElement in activeBendingRod:
        q.append(activeElement.complexq)
for axialMember in rng_axialMember:
    q.append(axialMember.complexq)

qQ = np.diagflat(q)
print('Complex force densities')
print(qQ)
print

# External forces
fL = np.array([
complex(0., 0.),
complex(0., 0.)
])
print('External forces')
print(fL)
print


Fixed nodes
[-5.+0.j  5.+0.j  0.+5.j  0.-5.j]

Connectivity matrix
[[-1.  0.]
 [ 1. -1.]
 [ 0.  1.]
 [ 1.  0.]
 [ 0.  1.]]
[[ 1.  0.  0.  0.]
 [ 0.  0.  0.  0.]
 [ 0. -1.  0.  0.]
 [ 0.  0. -1.  0.]
 [ 0.  0.  0. -1.]]

Complex force densities
[[-5.0+4.7895j  0.0+0.j      0.0+0.j      0.0+0.j      0.0+0.j    ]
 [ 0.0+0.j     -7.5-6.6428j  0.0+0.j      0.0+0.j      0.0+0.j    ]
 [ 0.0+0.j      0.0+0.j     -5.0+4.7895j  0.0+0.j      0.0+0.j    ]
 [ 0.0+0.j      0.0+0.j      0.0+0.j      7.5+0.j      0.0+0.j    ]
 [ 0.0+0.j      0.0+0.j      0.0+0.j      0.0+0.j      7.5+0.j    ]]

External forces
[ 0.+0.j  0.+0.j]


In [136]:
# Solution of the force density equations

gammaL = np.zeros(NN - NF)
DL = np.zeros((NN - NF, NN - NF))
DF = np.zeros((NN - NF, NF))

DL = np.dot(np.transpose(CL), np.dot(qQ, CL))
DF = np.dot(np.transpose(CL), np.dot(qQ, CF))

gammaL = np.linalg.solve(DL, fL - np.dot(DF, gammaF))
print('Free node coordinates')
print(gammaL)
print


Free node coordinates
[-1.87206777+0.188222j  1.87206777-0.188222j]


In [137]:
rng_gamma = np.empty(len(indexFreeNode)+len(indexFixedNode), dtype=complex)
rng_gamma[indexFreeNode] = gammaL
rng_gamma[indexFixedNode] = gammaF
print(rng_gamma)


[-5.00000000+0.j       -1.87206777+0.188222j  1.87206777-0.188222j
  5.00000000+0.j        0.00000000+5.j        0.00000000-5.j      ]

In [138]:
fig = plt.figure(figsize=(9,9))

ax = fig.gca(aspect='equal')
ax.scatter(gammaF.real, gammaF.imag, color='b')
ax.scatter(gammaL.real, gammaL.imag, color='r')
ax.set_xlabel('$x$')
ax.set_ylabel('$y$')


Out[138]:
<matplotlib.text.Text at 0xf590b70>

3 Structural form-finding (1)


In [139]:
totalDeltaM = [0.]*NABR
i = 0
for activeBendingRod in rng_activeBendingRod:
    for activeElement in activeBendingRod:
        startNode = activeElement.startNode
        endNode = activeElement.endNode
        activeElement.setActiveParams(rng_gamma[startNode], rng_gamma[endNode])
        totalDeltaM[i] += activeElement.DeltaM
    i += 1

In [140]:
for i in range(NABR):
    print('Total DeltaM = {:.5f}'.format(totalDeltaM[i]))


Total DeltaM = 0.00387

In [141]:
stateM = [-0.5*M for M in totalDeltaM]
#stateM = [0]
i = 0                         # Hay que revisar el código para el caso en que los nodos no sean correlativos
for activeBendingRod in rng_activeBendingRod:
    for activeElement in activeBendingRod:
        activeElement.setEndMoments('start', stateM[i])
        stateM[i] = activeElement.MB
    i += 1

In [142]:
for activeBendingRod in rng_activeBendingRod:
    for activeElement in activeBendingRod:
        print(activeElement.MA, activeElement.MB)


(-0.0019340606818829542, -47.031890833445075)
(-47.031890833445075, 47.031890833445075)
(47.031890833445075, 0.0019340606818829542)

In [143]:
rng_elastica = [None]*NABR
i = 0
for activeBendingRod in rng_activeBendingRod:
    rng_elastica[i] = []
    for activeElement in activeBendingRod:
        startNode = activeElement.startNode
        endNode = activeElement.endNode
        R = activeElement.R
        MA = activeElement.MA
        MB = activeElement.MB
        EI = activeElement.EI
        rng_elastica[i].append(Elastica(rng_gamma[startNode], rng_gamma[endNode], R, MA, MB, EI))
    i += 1

In [144]:
i = 0
for elasticaRod in rng_elastica:
    j = 0
    print('Elastica Rod {}'.format(i))
    print('***************')
    for element in elasticaRod:
        print('Element {}'.format(j))
        element.data()
        element.compute_k()
        j += 1
    print
    i += 1


Elastica Rod 0
***************
Element 0
 dAB =   3.1336         lcrit =  15.0814 m
   R = -15.6680 kN          S =  15.0083 kN
  MA =  -0.0019            MB = -47.0319
 muA =  -0.0000           muB =  -0.1437
kmin = 0.22578
flag = 0
k = 0.39627,    H/|P| = -0.68594

Element 1
 dAB =   3.7630         lcrit =  11.4409 m
   R = -28.2226 kN          S = -24.9969 kN
  MA = -47.0319            MB =  47.0319
 muA =  -0.1090           muB =   0.1090
kmin = 0.17128
flag = 0
k = 0.36863,    H/|P| = -0.72822

Element 2
 dAB =   3.1336         lcrit =  15.0814 m
   R = -15.6680 kN          S =  15.0083 kN
  MA =  47.0319            MB =   0.0019
 muA =   0.1437           muB =   0.0000
kmin = 0.22578
flag = 0
k = 0.39627,    H/|P| = -0.68594



In [145]:
fig = plt.figure(figsize=(5,5))
ax = fig.gca(aspect='equal')
font = {'size'   : 16}

ax.scatter(gammaF.real, gammaF.imag, color='b')
ax.scatter(gammaL.real, gammaL.imag, color='r')

for elasticaRod in rng_elastica:
    for element in elasticaRod:
        (x, y) = element.compute_Config()
        ax.plot(x, y, color ='b')

for axialMember in rng_axialMember:
    startNode = axialMember.startNode
    endNode = axialMember.endNode
    complexq = axialMember.complexq
    if abs(complexq) > 1E-8:
        x = rng_gamma[[startNode, endNode]].real
        y = rng_gamma[[startNode, endNode]].imag
        if complexq > 0:
            ax.plot(x, y, color ='g')
        else:
            ax.plot(x, y, color ='r')

ax.grid()
ax.set_xlabel(r'$x$', fontdict=font)
ax.set_ylabel(r'$y$', fontdict=font)


beta = 0.06010    alpha = 0.76390
phiA = 0.11111    phiB = -0.04037
beta = -0.10021    alpha = -0.72486
phiA = -0.04038    phiB = -0.04038
beta = 0.06010    alpha = 0.76390
phiA = -0.04037    phiB = 0.11111
Out[145]:
<matplotlib.text.Text at 0x10447ac8>

In [147]:
i = 0
for elasticaRod in rng_elastica:
    for element in elasticaRod:
        print('phi{0}A = {1:.5f}    phi{2}B = {3:.5f}'.format(i, element.phiA, i, element.phiB))


phi0A = 0.11111    phi0B = -0.04037
phi0A = -0.04038    phi0B = -0.04038
phi0A = -0.04037    phi0B = 0.11111

In [148]:
print(totalDeltaM)


[0.0038681213637659084]

4 Structural form-finding (2)


In [149]:
def setForceDensityMat(rng_activeBendingRod):
    q = []
    for activeBendingRod in rng_activeBendingRod:
        for activeElement in activeBendingRod:
            q.append(activeElement.complexq)
    for axialMember in rng_axialMember:
        q.append(axialMember.complexq)

    qQ = np.diagflat(q)
    #print('Complex force density matrix')
    #print(qQ)
    #print
    return(qQ)

In [150]:
def computeGamma(indexFreeNode, indexFixedNode, gammaF, CL, CF, qQ):
    NL = len(indexFreeNode)
    NF = len(indexFixedNode)
    
    DL = np.zeros((NL, NL))
    DF = np.zeros((NL, NF))
    gammaL = np.zeros(NL)
    
    DL = np.dot(np.transpose(CL), np.dot(qQ, CL))
    DF = np.dot(np.transpose(CL), np.dot(qQ, CF))
    gammaL = np.linalg.solve(DL, fL - np.dot(DF, gammaF))
    
    rng_gamma = np.empty(len(indexFreeNode)+len(indexFixedNode), dtype=complex)
    rng_gamma[indexFreeNode] = gammaL
    rng_gamma[indexFixedNode] = gammaF
    
    return(gammaL, rng_gamma)

In [258]:
class G:
    def __init__(self, indexFreeNode, indexFixedNode, gammaF, CL, CF, rng_activeBendingRod):
        self.indexFreeNode = indexFreeNode
        self.indexFixedNode = indexFixedNode
        self.gammaF = gammaF
        self.gammaL = None
        self.rng_gamma = None
        self.CL = CL
        self.CF = CF
        self.rng_activeBendingRod = rng_activeBendingRod
        self.rng_elastica = None
                
    def __call__(self, x):        
        indexFreeNode = self.indexFreeNode 
        indexFixedNode = self.indexFixedNode 
        gammaF = self.gammaF 
        CL = self.CL 
        CF = self.CF
        rng_activeBendingRod = self.rng_activeBendingRod
        NABR = len(rng_activeBendingRod)
        
        # Update shear densities in each element
        i = 0
        for activeBendingRod in rng_activeBendingRod:
            v = x[i]
            #v = np.insert(v, 0, activeBendingRod[0].complexq.imag)
            NELS = len(activeBendingRod)
            v = np.append(v, activeBendingRod[NELS-1].complexq.imag)
            print('v = {}'.format(v))
            k = 0
            for activeElement in activeBendingRod:
                complexq = activeElement.complexq
                #if k==1:
                #    complexq = complexq.real + 1j*v[0]
                #activeElement.complexq = complexq
                activeElement.complexq = complexq.real + 1j*v[k]
                print(activeElement.complexq)
                k += 1
            i += 1
        
        # Compute new nodal coordinates
        qQ = setForceDensityMat(rng_activeBendingRod)
        (gammaL, rng_gamma) = computeGamma(indexFreeNode, indexFixedNode, gammaF, CL, CF, qQ)
        self.gammaL = gammaL
        self.rng_gamma = rng_gamma
        
        # Compute R, S, DeltaM 
        rng_totalDeltaM = []
        rng_stateM = []
        i = 0
        for activeBendingRod in rng_activeBendingRod:
            totalDeltaM = 0.
            for activeElement in activeBendingRod:
                startNode = activeElement.startNode            
                endNode = activeElement.endNode
                activeElement.setActiveParams(rng_gamma[startNode], rng_gamma[endNode])
                totalDeltaM += activeElement.DeltaM            # Compute Sum DeltaM
                  
            rng_totalDeltaM.append(totalDeltaM)
            i += 1
        
        # Compute start M
        i = 0
        rng_elastica = [None]*NABR
        for activeBendingRod in rng_activeBendingRod:
            rng_elastica[i] = []
            stateM = 0.                                        # Set M at the start node
            #stateM = -0.5*rng_totalDeltaM[i]                   
            for activeElement in activeBendingRod:
                startNode = activeElement.startNode
                endNode = activeElement.endNode
                activeElement.setActiveParams(rng_gamma[startNode], rng_gamma[endNode])
                                                                            
                activeElement.setEndMoments('start', stateM)   # Compute element end moments
                stateM = activeElement.MB
                                                
                R = activeElement.R                            # Define elastica elements from parameters
                MA = activeElement.MA
                MB = activeElement.MB
                EI = activeElement.EI
                rng_elastica[i].append(Elastica(rng_gamma[startNode], rng_gamma[endNode], R, MA, MB, EI))
                
            rng_stateM.append(stateM)
            i += 1
        self.rng_activeBendingRod = rng_activeBendingRod
        
        # Compute k and configuration of elastica elems.
        rng_diffRotation = []*NABR
        i = 0
        for elasticaRod in rng_elastica:
            j = 0
            print('Elastica Rod {}'.format(i))
            print('***************')
            sttRotation = []
            endRotation = []
            for element in elasticaRod:                    
                print('Element {}'.format(j))
                element.data()
                element.compute_k()
                element.compute_Config()
                sttRotation.append(element.phiA)
                endRotation.append(element.phiB)
                j += 1
            print
            
            sttRotation = np.array(sttRotation)            # Compute nodal rotation differences
            endRotation = np.array(endRotation)
            print(sttRotation)
            print(endRotation)
            diffRotation = np.empty(len(elasticaRod)-1)
            diffRotation[:] = endRotation[:-1] - sttRotation[1:]
            #phiStart = 0.
            #diffRotation = np.append(phiStart - sttRotation[0], diffRotation)
            #diffRotation = np.append(phiStart - sttRotation[0], diffRotation[0])
            rng_diffRotation.append(diffRotation)
            i += 1
        self.rng_elastica = rng_elastica
        
        # Define and compute residuals for root search
        rng_residual = []                                  
        for i in range(NABR):
            #totalDeltaM = rng_totalDeltaM[i]
            #stateM = rng_stateM[i]
            diffRotation = rng_diffRotation[i]
            residual = diffRotation
            #residual = diffRotation[0]
            #residual = np.hstack((totalDeltaM, diffRotation))
            rng_residual.append(residual)
        
        rng_residual = np.array(rng_residual).flatten()
        print(x, rng_residual)
        print
        return(rng_residual)
    
    def plot(self):
        gammaF = self.gammaF
        gammaL = self.gammaL
        rng_gamma = self.rng_gamma
        rng_activeBendingRod = self.rng_activeBendingRod
        rng_elastica = self.rng_elastica
        
        fig = plt.figure(figsize=(9,9))
        ax = fig.gca(aspect='equal')
        ax.set_ylim(-4., 8.)
        ax.scatter(gammaF.real, gammaF.imag, color='b')
        ax.scatter(gammaL.real, gammaL.imag, color='r')

        for elasticaRod in rng_elastica:
            for element in elasticaRod:
                (x, y) = element.compute_Config()
                ax.plot(x, y, color ='b')

        for axialMember in rng_axialMember:
            startNode = axialMember.startNode
            endNode = axialMember.endNode
            complexq = axialMember.complexq
            if abs(complexq) > 1E-8:
                x = rng_gamma[[startNode, endNode]].real
                y = rng_gamma[[startNode, endNode]].imag
                if complexq > 0:
                    ax.plot(x, y, color ='g')
                else:
                    ax.plot(x, y, color ='r')

        ax.grid()
        ax.set_xlabel(r'$x$')
        ax.set_ylabel(r'$y$')
        return

In [259]:
# Input data

# Nodes
indexFreeNode = [1, 2, 3]
indexFixedNode = [0, 4, 5]
gammaF = np.array([
complex( 0. , 0. ),
complex(25. , 1.5),
complex(-1.5, 7.5)
])
print('Fixed nodes')
print(gammaF)
print

# Structural Members
NABR = 1                                        # Number of active bending rods
rng_activeBendingRod = [None]*NABR
# Active Members
rng_activeBendingRod[0] = []
rng_activeBendingRod[0].append(StructuralElement(0, 1, complex(-2.5, 0.5)))
rng_activeBendingRod[0].append(StructuralElement(1, 2, complex(-2.0, 0.5)))
rng_activeBendingRod[0].append(StructuralElement(2, 3, complex(-1.5, 0.5)))
rng_activeBendingRod[0].append(StructuralElement(3, 4, complex(-1.0, 0.26285)))
# Tension members
rng_axialMember = []
rng_axialMember.append(StructuralElement(1, 5, 0.08))
rng_axialMember.append(StructuralElement(2, 5, 0.09))
rng_axialMember.append(StructuralElement(3, 5, 0.10))

# Number of members
MMA = 0
for activeBendingRod in rng_activeBendingRod:
    MMA += len(activeBendingRod)                 # Bending active members
MMT = len(rng_axialMember)                       # Tension active members
MM = MMA + MMT

# Connectivity matrix
NN = len(indexFreeNode) + len(indexFixedNode)
C = np.zeros((MM, NN))
i = 0
for activeBendingRod in rng_activeBendingRod:
    for activeElement in activeBendingRod:
        C[i, activeElement.startNode] = 1
        C[i, activeElement.endNode] = -1
        i += 1
for axialMember in rng_axialMember:
    C[i, axialMember.startNode] = 1
    C[i, axialMember.endNode] = -1
    i += 1

CL = C[:, indexFreeNode]
CF = C[:, indexFixedNode]
print('Connectivity matrix')
print(CL)
print(CF)
print

# Force densities in kN/m corresponding to every element
qQ = setForceDensityMat(rng_activeBendingRod)

# External forces
fL = np.array([
complex(0., 0.),
complex(0., 0.),
complex(0., 0.)
])
print('External forces')
print(fL)
print


Fixed nodes
[  0.0+0.j   25.0+1.5j  -1.5+7.5j]

Connectivity matrix
[[-1.  0.  0.]
 [ 1. -1.  0.]
 [ 0.  1. -1.]
 [ 0.  0.  1.]
 [ 1.  0.  0.]
 [ 0.  1.  0.]
 [ 0.  0.  1.]]
[[ 1.  0.  0.]
 [ 0.  0.  0.]
 [ 0.  0.  0.]
 [ 0. -1.  0.]
 [ 0.  0. -1.]
 [ 0.  0. -1.]
 [ 0.  0. -1.]]

External forces
[ 0.+0.j  0.+0.j  0.+0.j]


In [260]:
(gammaL, rng_gamma) = computeGamma(indexFreeNode, indexFixedNode, gammaF, CL, CF, qQ)
print gammaL


[  4.77412526-0.34980858j  10.38206817-0.26462256j  16.88248047+0.61232596j]

In [261]:
fig = plt.figure(figsize=(9,9))

ax = fig.gca(aspect='equal')
ax.scatter(gammaF.real, gammaF.imag, color='b')
ax.scatter(gammaL.real, gammaL.imag, color='r')
ax.set_xlabel('$x$')
ax.set_ylabel('$y$')


Out[261]:
<matplotlib.text.Text at 0x133e3668>

In [262]:
g = G(indexFreeNode, indexFixedNode, gammaF, CL, CF, rng_activeBendingRod)

In [263]:
g([[-0.67561189, -0.31634141,  0.12285089]])


v = [-0.67561189 -0.31634141  0.12285089  0.26285   ]
(-2.5-0.67561189j)
(-2-0.31634141j)
(-1.5+0.12285089j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7236         lcrit =  20.0852 m
   R = -11.8089 kN          S =  -3.1913 kN
  MA =   0.0000            MB =  15.0743
 muA =   0.0000           muB =   0.0614
kmin = 0.09638
flag = 0
k = 0.14411,    H/|P| = -0.95846

beta = -0.36429    alpha = -0.26394
phiA = -0.38958    phiB = -0.31505
Element 1
 dAB =   5.7822         lcrit =  20.5300 m
   R = -11.5644 kN          S =  -1.8292 kN
  MA =  15.0743            MB =  25.6509
 muA =   0.0627           muB =   0.1067
kmin = 0.16763
flag = 0
k = 0.16793,    H/|P| = -0.94360

beta = -0.19881    alpha = -0.15687
phiA = -0.31478    phiB = -0.06208
Element 2
 dAB =   7.0860         lcrit =  21.5111 m
   R = -10.6290 kN          S =   0.8705 kN
  MA =  25.6509            MB =  19.4825
 muA =   0.1118           muB =   0.0849
kmin = 0.17564
flag = 0
flag = 1
k = 0.17564,    lmbd = 0.22546,    f = 0.10395,
k = 0.22564,    lmbd = 0.50741,    f = -0.17800,
k = 0.27564,    lmbd = 0.60091,    f = -0.27150,
k = 0.32564,    lmbd = 0.65061,    f = -0.32120,
k = 0.37564,    lmbd = 0.67619,    f = -0.34678,
k = 0.42564,    lmbd = 0.68551,    f = -0.35610,
k = 0.47564,    lmbd = 0.68236,    f = -0.35295,
k = 0.52564,    lmbd = 0.66865,    f = -0.33924,
k = 0.57564,    lmbd = 0.64524,    f = -0.31583,
k = 0.62564,    lmbd = 0.61229,    f = -0.28288,
k = 0.67564,    lmbd = 0.56935,    f = -0.23994,
k = 0.72564,    lmbd = 0.51527,    f = -0.18586,
k = 0.77564,    lmbd = 0.44800,    f = -0.11859,
k = 0.82564,    lmbd = 0.36385,    f = -0.03444,
k = 0.87564,    lmbd = 0.25592,    f = 0.07349,
k = 0.92564,    lmbd = 0.10961,    f = 0.21980,
k = 0.97564,    lmbd = 0.13719,    f = 0.19222,
k = 0.18298,    H/|P| = -0.93303

beta = 0.12283    alpha = 0.08172
phiA = -0.06159    phiB = 0.29228
Element 3
 dAB =   8.6099         lcrit =  23.5441 m
   R =  -8.6099 kN          S =   2.2631 kN
  MA =  19.4825            MB =  -0.0026
 muA =   0.0930           muB =  -0.0000
kmin = 0.14601
flag = 0
k = 0.16064,    H/|P| = -0.94839

beta = 0.41314    alpha = 0.25704
phiA = 0.29018    phiB = 0.47878

[-0.38957981 -0.31478376 -0.0615872   0.29017847]
[-0.31504982 -0.06208014  0.29227563  0.47878371]
([[-0.67561189, -0.31634141, 0.12285089]], array([-0.00026606, -0.00049294,  0.00209716]))

Out[263]:
array([-0.00026606, -0.00049294,  0.00209716])

In [264]:
g.plot()


beta = -0.36429    alpha = -0.26394
phiA = -0.38958    phiB = -0.31505
beta = -0.19881    alpha = -0.15687
phiA = -0.31478    phiB = -0.06208
beta = 0.12283    alpha = 0.08172
phiA = -0.06159    phiB = 0.29228
beta = 0.41314    alpha = 0.25704
phiA = 0.29018    phiB = 0.47878

In [265]:
x0 = [[-0.64511629, -0.30982594,  0.10766722]]
sol = scipy.optimize.broyden1(g, x0)


v = [-0.64511629 -0.30982594  0.10766722  0.26285   ]
(-2.5-0.64511629j)
(-2-0.30982594j)
(-1.5+0.10766722j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7305         lcrit =  20.1008 m
   R = -11.8262 kN          S =  -3.0517 kN
  MA =   0.0000            MB =  14.4359
 muA =   0.0000           muB =   0.0588
kmin = 0.09237
flag = 0
k = 0.13796,    H/|P| = -0.96194

beta = -0.35201    alpha = -0.25254
phiA = -0.37627    phiB = -0.30478
Element 1
 dAB =   5.7751         lcrit =  20.5479 m
   R = -11.5501 kN          S =  -1.7893 kN
  MA =  14.4359            MB =  24.7691
 muA =   0.0601           muB =   0.1031
kmin = 0.16200
flag = 0
k = 0.16238,    H/|P| = -0.94726

beta = -0.19498    alpha = -0.15369
phiA = -0.30628    phiB = -0.06343
Element 2
 dAB =   7.0768         lcrit =  21.5334 m
   R = -10.6152 kN          S =   0.7619 kN
  MA =  24.7691            MB =  19.3770
 muA =   0.1081           muB =   0.0846
kmin = 0.16977
flag = 0
flag = 1
k = 0.16977,    lmbd = 0.21406,    f = 0.11458,
k = 0.21977,    lmbd = 0.50559,    f = -0.17695,
k = 0.26977,    lmbd = 0.60182,    f = -0.27318,
k = 0.31977,    lmbd = 0.65283,    f = -0.32419,
k = 0.36977,    lmbd = 0.67919,    f = -0.35055,
k = 0.41977,    lmbd = 0.68907,    f = -0.36043,
k = 0.46977,    lmbd = 0.68639,    f = -0.35775,
k = 0.51977,    lmbd = 0.67312,    f = -0.34448,
k = 0.56977,    lmbd = 0.65018,    f = -0.32154,
k = 0.61977,    lmbd = 0.61776,    f = -0.28912,
k = 0.66977,    lmbd = 0.57545,    f = -0.24680,
k = 0.71977,    lmbd = 0.52217,    f = -0.19353,
k = 0.76977,    lmbd = 0.45596,    f = -0.12732,
k = 0.81977,    lmbd = 0.37332,    f = -0.04468,
k = 0.86977,    lmbd = 0.26776,    f = 0.06088,
k = 0.91977,    lmbd = 0.12556,    f = 0.20308,
k = 0.96977,    lmbd = 0.10524,    f = 0.22340,
k = 0.17809,    H/|P| = -0.93657

beta = 0.11301    alpha = 0.07166
phiA = -0.06624    phiB = 0.27919
Element 3
 dAB =   8.5867         lcrit =  23.5759 m
   R =  -8.5867 kN          S =   2.2570 kN
  MA =  19.3770            MB =  -0.0032
 muA =   0.0926           muB =  -0.0000
kmin = 0.14541
flag = 0
k = 0.16033,    H/|P| = -0.94859

beta = 0.41370    alpha = 0.25704
phiA = 0.29184    phiB = 0.47872

[-0.37626929 -0.30628353 -0.06623746  0.29184005]
[-0.30477874 -0.06343494  0.27919453  0.47871674]
(array([[-0.64511629, -0.30982594,  0.10766722]]), array([ 0.0015048 ,  0.00280253, -0.01264553]))

v = [-0.58741476 -0.20236283 -0.3772268   0.26285   ]
(-2.5-0.587414760119j)
(-2-0.202362825171j)
(-1.5-0.377226801824j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7670         lcrit =  20.0773 m
   R = -11.9176 kN          S =  -2.8002 kN
  MA =   0.0000            MB =  13.3489
 muA =   0.0000           muB =   0.0543
kmin = 0.08531
flag = 0
k = 0.12637,    H/|P| = -0.96806

beta = -0.26370    alpha = -0.23078
phiA = -0.28634    phiB = -0.21965
Element 1
 dAB =   5.8457         lcrit =  20.4925 m
   R = -11.6914 kN          S =  -1.1830 kN
  MA =  13.3489            MB =  20.2640
 muA =   0.0554           muB =   0.0841
kmin = 0.13218
flag = 0
flag = 1
k = 0.13218,    lmbd = 0.27112,    f = 0.01414,
k = 0.18218,    lmbd = 0.57641,    f = -0.29115,
k = 0.23218,    lmbd = 0.66807,    f = -0.38281,
k = 0.28218,    lmbd = 0.71389,    f = -0.42863,
k = 0.33218,    lmbd = 0.73573,    f = -0.45047,
k = 0.38218,    lmbd = 0.74192,    f = -0.45666,
k = 0.43218,    lmbd = 0.73635,    f = -0.45109,
k = 0.48218,    lmbd = 0.72094,    f = -0.43568,
k = 0.53218,    lmbd = 0.69657,    f = -0.41131,
k = 0.58218,    lmbd = 0.66345,    f = -0.37819,
k = 0.63218,    lmbd = 0.62124,    f = -0.33598,
k = 0.68218,    lmbd = 0.56906,    f = -0.28380,
k = 0.73218,    lmbd = 0.50530,    f = -0.22004,
k = 0.78218,    lmbd = 0.42726,    f = -0.14200,
k = 0.83218,    lmbd = 0.33020,    f = -0.04494,
k = 0.88218,    lmbd = 0.20504,    f = 0.08022,
k = 0.93218,    lmbd = 0.03855,    f = 0.24671,
k = 0.98218,    lmbd = 0.29851,    f = -0.01325,
k = 0.13231,    H/|P| = -0.96499

beta = -0.07561    alpha = -0.10084
phiA = -0.17434    phiB = 0.03682
Element 2
 dAB =   6.9389         lcrit =  21.4430 m
   R = -10.4084 kN          S =  -2.6175 kN
  MA =  20.2640            MB =  38.4270
 muA =   0.0881           muB =   0.1670
kmin = 0.26228
flag = 0
flag = 1
k = 0.26228,    lmbd = 0.32352,    f = 0.00008,
k = 0.31228,    lmbd = 0.52278,    f = -0.19918,
k = 0.36228,    lmbd = 0.58786,    f = -0.26426,
k = 0.41228,    lmbd = 0.62162,    f = -0.29802,
k = 0.46228,    lmbd = 0.63641,    f = -0.31281,
k = 0.51228,    lmbd = 0.63723,    f = -0.31363,
k = 0.56228,    lmbd = 0.62648,    f = -0.30288,
k = 0.61228,    lmbd = 0.60523,    f = -0.28164,
k = 0.66228,    lmbd = 0.57373,    f = -0.25013,
k = 0.71228,    lmbd = 0.53148,    f = -0.20788,
k = 0.76228,    lmbd = 0.47722,    f = -0.15362,
k = 0.81228,    lmbd = 0.40857,    f = -0.08497,
k = 0.86228,    lmbd = 0.32123,    f = 0.00237,
k = 0.91228,    lmbd = 0.20759,    f = 0.11601,
k = 0.96228,    lmbd = 0.08027,    f = 0.24333,
k = 0.26228,    H/|P| = -0.86241

beta = -0.14155    alpha = -0.24638
phiA = -0.34465    phiB = 0.10496
Element 3
 dAB =   8.7527         lcrit =  23.3513 m
   R =  -8.7527 kN          S =   2.3006 kN
  MA =  38.4270            MB =  18.2903
 muA =   0.1818           muB =   0.0865
kmin = 0.28563
flag = 0
flag = 1
k = 0.28563,    lmbd = 0.34261,    f = 0.03222,
k = 0.33563,    lmbd = 0.52739,    f = -0.15257,
k = 0.38563,    lmbd = 0.58649,    f = -0.21166,
k = 0.43563,    lmbd = 0.61628,    f = -0.24145,
k = 0.48563,    lmbd = 0.62802,    f = -0.25319,
k = 0.53563,    lmbd = 0.62622,    f = -0.25140,
k = 0.58563,    lmbd = 0.61300,    f = -0.23818,
k = 0.63563,    lmbd = 0.58923,    f = -0.21440,
k = 0.68563,    lmbd = 0.55495,    f = -0.18013,
k = 0.73563,    lmbd = 0.50949,    f = -0.13467,
k = 0.78563,    lmbd = 0.45127,    f = -0.07645,
k = 0.83563,    lmbd = 0.37741,    f = -0.00258,
k = 0.88563,    lmbd = 0.28281,    f = 0.09201,
k = 0.93563,    lmbd = 0.16070,    f = 0.21413,
k = 0.98563,    lmbd = 0.13819,    f = 0.23663,
k = 0.28715,    H/|P| = -0.83510

beta = 0.49568    alpha = 0.25704
phiA = 0.17965    phiB = 0.75005

[-0.28634045 -0.17433856 -0.34464774  0.17964586]
[-0.2196515   0.03682358  0.10496121  0.75004595]
(array([[-0.58741476, -0.20236283, -0.3772268 ]]), array([-0.04531293,  0.38147132, -0.07468465]))

v = [-0.64508426 -0.30976629  0.10739806  0.26285   ]
(-2.5-0.645084260025j)
(-2-0.309766287494j)
(-1.5+0.107398056542j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7304         lcrit =  20.1009 m
   R = -11.8261 kN          S =  -3.0515 kN
  MA =   0.0000            MB =  14.4350
 muA =   0.0000           muB =   0.0588
kmin = 0.09236
flag = 0
k = 0.13795,    H/|P| = -0.96194

beta = -0.35196    alpha = -0.25253
phiA = -0.37622    phiB = -0.30473
Element 1
 dAB =   5.7750         lcrit =  20.5480 m
   R = -11.5501 kN          S =  -1.7889 kN
  MA =  14.4350            MB =  24.7660
 muA =   0.0601           muB =   0.1031
kmin = 0.16199
flag = 0
k = 0.16236,    H/|P| = -0.94728

beta = -0.19491    alpha = -0.15366
phiA = -0.30621    phiB = -0.06338
Element 2
 dAB =   7.0768         lcrit =  21.5335 m
   R = -10.6152 kN          S =   0.7600 kN
  MA =  24.7660            MB =  19.3874
 muA =   0.1081           muB =   0.0846
kmin = 0.16975
flag = 0
flag = 1
k = 0.16975,    lmbd = 0.21380,    f = 0.11484,
k = 0.21975,    lmbd = 0.50545,    f = -0.17681,
k = 0.26975,    lmbd = 0.60173,    f = -0.27309,
k = 0.31975,    lmbd = 0.65277,    f = -0.32412,
k = 0.36975,    lmbd = 0.67915,    f = -0.35050,
k = 0.41975,    lmbd = 0.68904,    f = -0.36040,
k = 0.46975,    lmbd = 0.68637,    f = -0.35772,
k = 0.51975,    lmbd = 0.67311,    f = -0.34447,
k = 0.56975,    lmbd = 0.65017,    f = -0.32153,
k = 0.61975,    lmbd = 0.61776,    f = -0.28912,
k = 0.66975,    lmbd = 0.57546,    f = -0.24682,
k = 0.71975,    lmbd = 0.52219,    f = -0.19355,
k = 0.76975,    lmbd = 0.45599,    f = -0.12735,
k = 0.81975,    lmbd = 0.37337,    f = -0.04472,
k = 0.86975,    lmbd = 0.26783,    f = 0.06082,
k = 0.91975,    lmbd = 0.12565,    f = 0.20299,
k = 0.96975,    lmbd = 0.10505,    f = 0.22359,
k = 0.17810,    H/|P| = -0.93656

beta = 0.11287    alpha = 0.07148
phiA = -0.06639    phiB = 0.27910
Element 3
 dAB =   8.5866         lcrit =  23.5760 m
   R =  -8.5866 kN          S =   2.2570 kN
  MA =  19.3874            MB =   0.0074
 muA =   0.0926           muB =   0.0000
kmin = 0.14549
flag = 0
k = 0.16038,    H/|P| = -0.94856

beta = 0.41375    alpha = 0.25704
phiA = 0.29179    phiB = 0.47887

[-0.37621812 -0.30620513 -0.06639226  0.29178988]
[-0.30473305 -0.06338334  0.27909937  0.47886805]
(array([[-0.64508426, -0.30976629,  0.10739806]]), array([ 0.00147209,  0.00300893, -0.01269051]))

v = [-0.58741476 -0.20236283 -0.3772268   0.26285   ]
(-2.5-0.587414760119j)
(-2-0.202362825171j)
(-1.5-0.377226801824j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7670         lcrit =  20.0773 m
   R = -11.9176 kN          S =  -2.8002 kN
  MA =   0.0000            MB =  13.3489
 muA =   0.0000           muB =   0.0543
kmin = 0.08531
flag = 0
k = 0.12637,    H/|P| = -0.96806

beta = -0.26370    alpha = -0.23078
phiA = -0.28634    phiB = -0.21965
Element 1
 dAB =   5.8457         lcrit =  20.4925 m
   R = -11.6914 kN          S =  -1.1830 kN
  MA =  13.3489            MB =  20.2640
 muA =   0.0554           muB =   0.0841
kmin = 0.13218
flag = 0
flag = 1
k = 0.13218,    lmbd = 0.27112,    f = 0.01414,
k = 0.18218,    lmbd = 0.57641,    f = -0.29115,
k = 0.23218,    lmbd = 0.66807,    f = -0.38281,
k = 0.28218,    lmbd = 0.71389,    f = -0.42863,
k = 0.33218,    lmbd = 0.73573,    f = -0.45047,
k = 0.38218,    lmbd = 0.74192,    f = -0.45666,
k = 0.43218,    lmbd = 0.73635,    f = -0.45109,
k = 0.48218,    lmbd = 0.72094,    f = -0.43568,
k = 0.53218,    lmbd = 0.69657,    f = -0.41131,
k = 0.58218,    lmbd = 0.66345,    f = -0.37819,
k = 0.63218,    lmbd = 0.62124,    f = -0.33598,
k = 0.68218,    lmbd = 0.56906,    f = -0.28380,
k = 0.73218,    lmbd = 0.50530,    f = -0.22004,
k = 0.78218,    lmbd = 0.42726,    f = -0.14200,
k = 0.83218,    lmbd = 0.33020,    f = -0.04494,
k = 0.88218,    lmbd = 0.20504,    f = 0.08022,
k = 0.93218,    lmbd = 0.03855,    f = 0.24671,
k = 0.98218,    lmbd = 0.29851,    f = -0.01325,
k = 0.13231,    H/|P| = -0.96499

beta = -0.07561    alpha = -0.10084
phiA = -0.17434    phiB = 0.03682
Element 2
 dAB =   6.9389         lcrit =  21.4430 m
   R = -10.4084 kN          S =  -2.6175 kN
  MA =  20.2640            MB =  38.4270
 muA =   0.0881           muB =   0.1670
kmin = 0.26228
flag = 0
flag = 1
k = 0.26228,    lmbd = 0.32352,    f = 0.00008,
k = 0.31228,    lmbd = 0.52278,    f = -0.19918,
k = 0.36228,    lmbd = 0.58786,    f = -0.26426,
k = 0.41228,    lmbd = 0.62162,    f = -0.29802,
k = 0.46228,    lmbd = 0.63641,    f = -0.31281,
k = 0.51228,    lmbd = 0.63723,    f = -0.31363,
k = 0.56228,    lmbd = 0.62648,    f = -0.30288,
k = 0.61228,    lmbd = 0.60523,    f = -0.28164,
k = 0.66228,    lmbd = 0.57373,    f = -0.25013,
k = 0.71228,    lmbd = 0.53148,    f = -0.20788,
k = 0.76228,    lmbd = 0.47722,    f = -0.15362,
k = 0.81228,    lmbd = 0.40857,    f = -0.08497,
k = 0.86228,    lmbd = 0.32123,    f = 0.00237,
k = 0.91228,    lmbd = 0.20759,    f = 0.11601,
k = 0.96228,    lmbd = 0.08027,    f = 0.24333,
k = 0.26228,    H/|P| = -0.86241

beta = -0.14155    alpha = -0.24638
phiA = -0.34465    phiB = 0.10496
Element 3
 dAB =   8.7527         lcrit =  23.3513 m
   R =  -8.7527 kN          S =   2.3006 kN
  MA =  38.4270            MB =  18.2903
 muA =   0.1818           muB =   0.0865
kmin = 0.28563
flag = 0
flag = 1
k = 0.28563,    lmbd = 0.34261,    f = 0.03222,
k = 0.33563,    lmbd = 0.52739,    f = -0.15257,
k = 0.38563,    lmbd = 0.58649,    f = -0.21166,
k = 0.43563,    lmbd = 0.61628,    f = -0.24145,
k = 0.48563,    lmbd = 0.62802,    f = -0.25319,
k = 0.53563,    lmbd = 0.62622,    f = -0.25140,
k = 0.58563,    lmbd = 0.61300,    f = -0.23818,
k = 0.63563,    lmbd = 0.58923,    f = -0.21440,
k = 0.68563,    lmbd = 0.55495,    f = -0.18013,
k = 0.73563,    lmbd = 0.50949,    f = -0.13467,
k = 0.78563,    lmbd = 0.45127,    f = -0.07645,
k = 0.83563,    lmbd = 0.37741,    f = -0.00258,
k = 0.88563,    lmbd = 0.28281,    f = 0.09201,
k = 0.93563,    lmbd = 0.16070,    f = 0.21413,
k = 0.98563,    lmbd = 0.13819,    f = 0.23663,
k = 0.28715,    H/|P| = -0.83510

beta = 0.49568    alpha = 0.25704
phiA = 0.17965    phiB = 0.75005

[-0.28634045 -0.17433856 -0.34464774  0.17964586]
[-0.2196515   0.03682358  0.10496121  0.75004595]
(array([[-0.58741476, -0.20236283, -0.3772268 ]]), array([-0.04531293,  0.38147132, -0.07468465]))

v = [-0.42100387 -1.60330899 -0.10294885  0.26285   ]
(-2.5-0.421003872612j)
(-2-1.60330899304j)
(-1.5-0.102948851147j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   5.1014         lcrit =  19.5337 m
   R = -12.7535 kN          S =  -2.1477 kN
  MA =   0.0000            MB =  10.9563
 muA =   0.0000           muB =   0.0434
kmin = 0.06812
flag = 0
k = 0.09337,    H/|P| = -0.98256

beta = -0.18014    alpha = -0.16684
phiA = -0.20032    phiB = -0.14111
Element 1
 dAB =   4.8455         lcrit =  19.9326 m
   R =  -9.6910 kN          S =  -7.7688 kN
  MA =  10.9563            MB =  48.6002
 muA =   0.0443           muB =   0.1963
kmin = 0.30836
flag = 0
k = 0.39358,    H/|P| = -0.69019

beta = -0.63539    alpha = -0.67575
phiA = -0.75525    phiB = -0.45384
Element 2
 dAB =   7.6970         lcrit =  20.6499 m
   R = -11.5455 kN          S =  -0.7924 kN
  MA =  48.6002            MB =  54.6992
 muA =   0.2034           muB =   0.2289
kmin = 0.35954
flag = 0
flag = 1
k = 0.35954,    lmbd = 0.15177,    f = 0.22097,
k = 0.40954,    lmbd = 0.36419,    f = 0.00855,
k = 0.45954,    lmbd = 0.44483,    f = -0.07209,
k = 0.50954,    lmbd = 0.49095,    f = -0.11821,
k = 0.55954,    lmbd = 0.51582,    f = -0.14309,
k = 0.60954,    lmbd = 0.52494,    f = -0.15221,
k = 0.65954,    lmbd = 0.52094,    f = -0.14820,
k = 0.70954,    lmbd = 0.50497,    f = -0.13223,
k = 0.75954,    lmbd = 0.47719,    f = -0.10445,
k = 0.80954,    lmbd = 0.43681,    f = -0.06408,
k = 0.85954,    lmbd = 0.38184,    f = -0.00910,
k = 0.90954,    lmbd = 0.30817,    f = 0.06457,
k = 0.95954,    lmbd = 0.20697,    f = 0.16577,
k = 0.41362,    H/|P| = -0.65783

beta = 0.06295    alpha = -0.06853
phiA = -0.40025    phiB = 0.54335
Element 3
 dAB =   9.6771         lcrit =  22.2080 m
   R =  -9.6771 kN          S =   2.5436 kN
  MA =  54.6992            MB =  30.0843
 muA =   0.2462           muB =   0.1354
kmin = 0.38667
flag = 0
flag = 1
k = 0.38667,    lmbd = 0.31529,    f = 0.12046,
k = 0.43667,    lmbd = 0.47157,    f = -0.03582,
k = 0.48667,    lmbd = 0.52238,    f = -0.08664,
k = 0.53667,    lmbd = 0.54728,    f = -0.11153,
k = 0.58667,    lmbd = 0.55526,    f = -0.11951,
k = 0.63667,    lmbd = 0.54985,    f = -0.11410,
k = 0.68667,    lmbd = 0.53252,    f = -0.09677,
k = 0.73667,    lmbd = 0.50362,    f = -0.06787,
k = 0.78667,    lmbd = 0.46253,    f = -0.02679,
k = 0.83667,    lmbd = 0.40757,    f = 0.02818,
k = 0.88667,    lmbd = 0.33542,    f = 0.10033,
k = 0.93667,    lmbd = 0.24007,    f = 0.19568,
k = 0.98667,    lmbd = 0.12308,    f = 0.31267,
k = 0.41549,    H/|P| = -0.65474

beta = 0.51967    alpha = 0.25704
phiA = -0.04265    phiB = 0.99261

[-0.20032403 -0.75525285 -0.40024844 -0.04264734]
[-0.14110708 -0.45383561  0.54334689  0.99260529]
(array([[-0.42100387, -1.60330899, -0.10294885]]), array([ 0.61414576, -0.05358717,  0.58599422]))

v = [-0.56980016 -0.35065304 -0.34819447  0.26285   ]
(-2.5-0.56980016069j)
(-2-0.350653035852j)
(-1.5-0.348194469231j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7797         lcrit =  20.0663 m
   R = -11.9492 kN          S =  -2.7235 kN
  MA =   0.0000            MB =  13.0173
 muA =   0.0000           muB =   0.0529
kmin = 0.08315
flag = 0
k = 0.12281,    H/|P| = -0.96984

beta = -0.24965    alpha = -0.22409
phiA = -0.27179    phiB = -0.20656
Element 1
 dAB =   5.7953         lcrit =  20.4784 m
   R = -11.5905 kN          S =  -2.0321 kN
  MA =  13.0173            MB =  24.7940
 muA =   0.0540           muB =   0.1029
kmin = 0.16162
flag = 0
k = 0.16314,    H/|P| = -0.94677

beta = -0.14115    alpha = -0.17356
phiA = -0.24716    phiB = -0.01199
Element 2
 dAB =   6.9902         lcrit =  21.4114 m
   R = -10.4853 kN          S =  -2.4340 kN
  MA =  24.7940            MB =  41.8078
 muA =   0.1076           muB =   0.1814
kmin = 0.28494
flag = 0
flag = 1
k = 0.28494,    lmbd = 0.29819,    f = 0.02828,
k = 0.33494,    lmbd = 0.49389,    f = -0.16742,
k = 0.38494,    lmbd = 0.55989,    f = -0.23342,
k = 0.43494,    lmbd = 0.59485,    f = -0.26838,
k = 0.48494,    lmbd = 0.61075,    f = -0.28428,
k = 0.53494,    lmbd = 0.61249,    f = -0.28602,
k = 0.58494,    lmbd = 0.60241,    f = -0.27594,
k = 0.63494,    lmbd = 0.58154,    f = -0.25507,
k = 0.68494,    lmbd = 0.55005,    f = -0.22358,
k = 0.73494,    lmbd = 0.50736,    f = -0.18089,
k = 0.78494,    lmbd = 0.45202,    f = -0.12555,
k = 0.83494,    lmbd = 0.38127,    f = -0.05480,
k = 0.88494,    lmbd = 0.28999,    f = 0.03648,
k = 0.93494,    lmbd = 0.16903,    f = 0.15744,
k = 0.98494,    lmbd = 0.09151,    f = 0.23496,
k = 0.28607,    H/|P| = -0.83632

beta = -0.11301    alpha = -0.22809
phiA = -0.35078    phiB = 0.16594
Element 3
 dAB =   8.7989         lcrit =  23.2899 m
   R =  -8.7989 kN          S =   2.3128 kN
  MA =  41.8078            MB =  21.4580
 muA =   0.1973           muB =   0.1013
kmin = 0.30994
flag = 0
flag = 1
k = 0.30994,    lmbd = 0.32894,    f = 0.04885,
k = 0.35994,    lmbd = 0.50743,    f = -0.12963,
k = 0.40994,    lmbd = 0.56546,    f = -0.18767,
k = 0.45994,    lmbd = 0.59492,    f = -0.21712,
k = 0.50994,    lmbd = 0.60651,    f = -0.22871,
k = 0.55994,    lmbd = 0.60452,    f = -0.22672,
k = 0.60994,    lmbd = 0.59095,    f = -0.21315,
k = 0.65994,    lmbd = 0.56657,    f = -0.18877,
k = 0.70994,    lmbd = 0.53132,    f = -0.15352,
k = 0.75994,    lmbd = 0.48434,    f = -0.10655,
k = 0.80994,    lmbd = 0.42377,    f = -0.04598,
k = 0.85994,    lmbd = 0.34618,    f = 0.03162,
k = 0.90994,    lmbd = 0.24548,    f = 0.13232,
k = 0.95994,    lmbd = 0.11938,    f = 0.25841,
k = 0.31367,    H/|P| = -0.80322

beta = 0.50858    alpha = 0.25704
phiA = 0.15499    phiB = 0.79904

[-0.2717928  -0.24716432 -0.35078391  0.15498842]
[-0.20656348 -0.01199158  0.16594432  0.79904159]
(array([[-0.56980016, -0.35065304, -0.34819447]]), array([ 0.04060084,  0.33879233,  0.0109559 ]))

v = [ 0.08143918 -0.03509599  0.24842585  0.26285   ]
(-2.5+0.0814391834143j)
(-2-0.0350959912486j)
(-1.5+0.248425851985j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.8150         lcrit =  20.2419 m
   R = -12.0376 kN          S =   0.3921 kN
  MA =   0.0000            MB =  -1.8881
 muA =   0.0000           muB =  -0.0077
kmin = 0.01217
flag = 0
k = 0.01790,    H/|P| = -0.99936

beta = -0.14040    alpha = 0.03256
phiA = -0.13716    phiB = -0.14670
Element 1
 dAB =   5.7247         lcrit =  20.7592 m
   R = -11.4493 kN          S =  -0.2009 kN
  MA =  -1.8881            MB =  -0.7380
 muA =  -0.0079           muB =  -0.0031
kmin = 0.01248
flag = 0
k = 0.01317,    H/|P| = -0.99965

beta = -0.14178    alpha = -0.01755
phiA = -0.13264    phiB = -0.14869
Element 2
 dAB =   6.7789         lcrit =  21.8813 m
   R = -10.1683 kN          S =   1.6840 kN
  MA =  -0.7380            MB = -12.1538
 muA =  -0.0033           muB =  -0.0539
kmin = 0.08465
flag = 0
k = 0.09922,    H/|P| = -0.98031

beta = 0.10486    alpha = 0.16413
phiA = 0.13922    phiB = 0.04427
Element 3
 dAB =   8.1471         lcrit =  24.2036 m
   R =  -8.1471 kN          S =   2.1415 kN
  MA = -12.1538            MB = -29.6005
 muA =  -0.0596           muB =  -0.1452
kmin = 0.22805
flag = 0
k = 0.22911,    H/|P| = -0.89502

beta = 0.28278    alpha = 0.25704
phiA = 0.44705    phiB = 0.06971

[-0.13716466 -0.13264326  0.13922196  0.44704756]
[-0.14670399 -0.14869345  0.04427193  0.06970904]
(array([[ 0.08143918, -0.03509599,  0.24842585]]), array([-0.01406073, -0.28791541, -0.40277562]))

v = [-0.41510276 -0.27569464 -0.20647144  0.26285   ]
(-2.5-0.415102761125j)
(-2-0.275694643585j)
(-1.5-0.206471440585j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7862         lcrit =  20.1705 m
   R = -11.9655 kN          S =  -1.9868 kN
  MA =   0.0000            MB =   9.5090
 muA =   0.0000           muB =   0.0389
kmin = 0.06105
flag = 0
k = 0.09025,    H/|P| = -0.98371

beta = -0.22449    alpha = -0.16454
phiA = -0.24069    phiB = -0.19297
Element 1
 dAB =   5.7528         lcrit =  20.6129 m
   R = -11.5055 kN          S =  -1.5860 kN
  MA =   9.5090            MB =  18.6329
 muA =   0.0397           muB =   0.0778
kmin = 0.12226
flag = 0
k = 0.12400,    H/|P| = -0.96925

beta = -0.14055    alpha = -0.13698
phiA = -0.21830    phiB = -0.04504
Element 2
 dAB =   6.9855         lcrit =  21.5999 m
   R = -10.4783 kN          S =  -1.4423 kN
  MA =  18.6329            MB =  28.7083
 muA =   0.0816           muB =   0.1257
kmin = 0.19738
flag = 0
flag = 1
k = 0.19738,    lmbd = 0.27526,    f = 0.04815,
k = 0.24738,    lmbd = 0.52347,    f = -0.20007,
k = 0.29738,    lmbd = 0.60549,    f = -0.28208,
k = 0.34738,    lmbd = 0.64897,    f = -0.32556,
k = 0.39738,    lmbd = 0.67048,    f = -0.34707,
k = 0.44738,    lmbd = 0.67673,    f = -0.35333,
k = 0.49738,    lmbd = 0.67097,    f = -0.34757,
k = 0.54738,    lmbd = 0.65482,    f = -0.33142,
k = 0.59738,    lmbd = 0.62894,    f = -0.30553,
k = 0.64738,    lmbd = 0.59330,    f = -0.26990,
k = 0.69738,    lmbd = 0.54727,    f = -0.22386,
k = 0.74738,    lmbd = 0.48943,    f = -0.16603,
k = 0.79738,    lmbd = 0.41728,    f = -0.09387,
k = 0.84738,    lmbd = 0.32627,    f = -0.00287,
k = 0.89738,    lmbd = 0.20777,    f = 0.11564,
k = 0.94738,    lmbd = 0.05350,    f = 0.26990,
k = 0.99738,    lmbd = 0.31792,    f = 0.00549,
k = 0.19947,    H/|P| = -0.92043

beta = -0.06089    alpha = -0.13679
phiA = -0.23108    phiB = 0.13342
Element 3
 dAB =   8.5539         lcrit =  23.6210 m
   R =  -8.5539 kN          S =   2.2484 kN
  MA =  28.7083            MB =   9.4757
 muA =   0.1374           muB =   0.0454
kmin = 0.21585
flag = 0
k = 0.21700,    H/|P| = -0.90582

beta = 0.45986    alpha = 0.25704
phiA = 0.24741    phiB = 0.61569

[-0.24068871 -0.21830405 -0.23108402  0.24740971]
[-0.1929703  -0.04503689  0.13341667  0.61569419]
(array([[-0.41510276, -0.27569464, -0.20647144]]), array([ 0.02533375,  0.18604713, -0.11399303]))

v = [-1.15566018 -0.14139043  0.1041118   0.26285   ]
(-2.5-1.15566018263j)
(-2-0.141390427958j)
(-1.5+0.104111800449j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.4859         lcrit =  19.9855 m
   R = -11.2146 kN          S =  -5.1841 kN
  MA =   0.0000            MB =  23.2553
 muA =   0.0000           muB =   0.0942
kmin = 0.14794
flag = 0
k = 0.23271,    H/|P| = -0.89169

beta = -0.53184    alpha = -0.43301
phiA = -0.56856    phiB = -0.46006
Element 1
 dAB =   5.9219         lcrit =  20.3868 m
   R = -11.8438 kN          S =  -0.8373 kN
  MA =  23.2553            MB =  28.2137
 muA =   0.0961           muB =   0.1166
kmin = 0.18309
flag = 0
flag = 1
k = 0.18309,    lmbd = 0.19161,    f = 0.09887,
k = 0.23309,    lmbd = 0.48144,    f = -0.19097,
k = 0.28309,    lmbd = 0.57944,    f = -0.28896,
k = 0.33309,    lmbd = 0.63217,    f = -0.34169,
k = 0.38309,    lmbd = 0.66001,    f = -0.36953,
k = 0.43309,    lmbd = 0.67111,    f = -0.38064,
k = 0.48309,    lmbd = 0.66940,    f = -0.37892,
k = 0.53309,    lmbd = 0.65686,    f = -0.36638,
k = 0.58309,    lmbd = 0.63442,    f = -0.34394,
k = 0.63309,    lmbd = 0.60226,    f = -0.31178,
k = 0.68309,    lmbd = 0.55993,    f = -0.26946,
k = 0.73309,    lmbd = 0.50629,    f = -0.21581,
k = 0.78309,    lmbd = 0.43919,    f = -0.14871,
k = 0.83309,    lmbd = 0.35483,    f = -0.06435,
k = 0.88309,    lmbd = 0.24587,    f = 0.04460,
k = 0.93309,    lmbd = 0.09620,    f = 0.19427,
k = 0.98309,    lmbd = 0.16081,    f = 0.12967,
k = 0.18968,    H/|P| = -0.92804

beta = -0.10741    alpha = -0.07058
phiA = -0.26715    phiB = 0.06235
Element 2
 dAB =   7.2252         lcrit =  21.3128 m
   R = -10.8379 kN          S =   0.7522 kN
  MA =  28.2137            MB =  22.7786
 muA =   0.1219           muB =   0.0984
kmin = 0.19140
flag = 0
flag = 1
k = 0.19140,    lmbd = 0.20091,    f = 0.13810,
k = 0.24140,    lmbd = 0.48023,    f = -0.14122,
k = 0.29140,    lmbd = 0.57549,    f = -0.23648,
k = 0.34140,    lmbd = 0.62701,    f = -0.28800,
k = 0.39140,    lmbd = 0.65418,    f = -0.31517,
k = 0.44140,    lmbd = 0.66482,    f = -0.32581,
k = 0.49140,    lmbd = 0.66271,    f = -0.32371,
k = 0.54140,    lmbd = 0.64978,    f = -0.31077,
k = 0.59140,    lmbd = 0.62689,    f = -0.28788,
k = 0.64140,    lmbd = 0.59418,    f = -0.25517,
k = 0.69140,    lmbd = 0.55114,    f = -0.21213,
k = 0.74140,    lmbd = 0.49654,    f = -0.15754,
k = 0.79140,    lmbd = 0.42811,    f = -0.08911,
k = 0.84140,    lmbd = 0.34174,    f = -0.00273,
k = 0.89140,    lmbd = 0.22943,    f = 0.10957,
k = 0.94140,    lmbd = 0.07367,    f = 0.26534,
k = 0.99140,    lmbd = 0.21409,    f = 0.12492,
k = 0.20430,    H/|P| = -0.91652

beta = 0.11531    alpha = 0.06930
phiA = -0.09699    phiB = 0.31409
Element 3
 dAB =   8.8266         lcrit =  23.2533 m
   R =  -8.8266 kN          S =   2.3201 kN
  MA =  22.7786            MB =   2.3001
 muA =   0.1073           muB =   0.0108
kmin = 0.16860
flag = 0
k = 0.17588,    H/|P| = -0.93814

beta = 0.41743    alpha = 0.25704
phiA = 0.26055    phiB = 0.51231

[-0.56856119 -0.26715454 -0.09699452  0.26055446]
[-0.46005773  0.06235338  0.31409338  0.51230621]
(array([[-1.15566018, -0.14139043,  0.1041118 ]]), array([-0.19290319,  0.1593479 ,  0.05353892]))

v = [-0.68798967 -0.22620508 -0.09202508  0.26285   ]
(-2.5-0.687989665859j)
(-2-0.226205082572j)
(-1.5-0.0920250832233j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.6921         lcrit =  20.1398 m
   R = -11.7303 kN          S =  -3.2281 kN
  MA =   0.0000            MB =  15.1468
 muA =   0.0000           muB =   0.0618
kmin = 0.09710
flag = 0
k = 0.14635,    H/|P| = -0.95716

beta = -0.34071    alpha = -0.26855
phiA = -0.36591    phiB = -0.29159
Element 1
 dAB =   5.7940         lcrit =  20.5707 m
   R = -11.5880 kN          S =  -1.3106 kN
  MA =  15.1468            MB =  22.7406
 muA =   0.0631           muB =   0.0948
kmin = 0.14890
flag = 0
flag = 1
k = 0.14890,    lmbd = 0.26802,    f = 0.01364,
k = 0.19890,    lmbd = 0.55741,    f = -0.27575,
k = 0.24890,    lmbd = 0.64752,    f = -0.36585,
k = 0.29890,    lmbd = 0.69359,    f = -0.41192,
k = 0.34890,    lmbd = 0.71601,    f = -0.43435,
k = 0.39890,    lmbd = 0.72276,    f = -0.44110,
k = 0.44890,    lmbd = 0.71758,    f = -0.43592,
k = 0.49890,    lmbd = 0.70236,    f = -0.42069,
k = 0.54890,    lmbd = 0.67793,    f = -0.39627,
k = 0.59890,    lmbd = 0.64447,    f = -0.36281,
k = 0.64890,    lmbd = 0.60160,    f = -0.31993,
k = 0.69890,    lmbd = 0.54831,    f = -0.26665,
k = 0.74890,    lmbd = 0.48284,    f = -0.20118,
k = 0.79890,    lmbd = 0.40211,    f = -0.12045,
k = 0.84890,    lmbd = 0.30066,    f = -0.01899,
k = 0.89890,    lmbd = 0.16766,    f = 0.11400,
k = 0.94890,    lmbd = 0.04571,    f = 0.23595,
k = 0.99890,    lmbd = 0.49244,    f = -0.21078,
k = 0.14904,    H/|P| = -0.95558

beta = -0.12563    alpha = -0.11262
phiA = -0.23596    phiB = -0.00038
Element 2
 dAB =   7.0771         lcrit =  21.5404 m
   R = -10.6157 kN          S =  -0.6513 kN
  MA =  22.7406            MB =  27.3498
 muA =   0.0993           muB =   0.1194
kmin = 0.18752
flag = 0
flag = 1
k = 0.18752,    lmbd = 0.18751,    f = 0.14104,
k = 0.23752,    lmbd = 0.47556,    f = -0.14701,
k = 0.28752,    lmbd = 0.57357,    f = -0.24502,
k = 0.33752,    lmbd = 0.62653,    f = -0.29797,
k = 0.38752,    lmbd = 0.65462,    f = -0.32607,
k = 0.43752,    lmbd = 0.66593,    f = -0.33738,
k = 0.48752,    lmbd = 0.66439,    f = -0.33584,
k = 0.53752,    lmbd = 0.65197,    f = -0.32342,
k = 0.58752,    lmbd = 0.62958,    f = -0.30103,
k = 0.63752,    lmbd = 0.59740,    f = -0.26885,
k = 0.68752,    lmbd = 0.55496,    f = -0.22641,
k = 0.73752,    lmbd = 0.50109,    f = -0.17254,
k = 0.78752,    lmbd = 0.43358,    f = -0.10503,
k = 0.83752,    lmbd = 0.34849,    f = -0.01994,
k = 0.88752,    lmbd = 0.23819,    f = 0.09036,
k = 0.93752,    lmbd = 0.08565,    f = 0.24290,
k = 0.98752,    lmbd = 0.18364,    f = 0.14491,
k = 0.20026,    H/|P| = -0.91979

beta = 0.00739    alpha = -0.06127
phiA = -0.18333    phiB = 0.20932
Element 3
 dAB =   8.6080         lcrit =  23.5467 m
   R =  -8.6080 kN          S =   2.2626 kN
  MA =  27.3498            MB =   7.8731
 muA =   0.1305           muB =   0.0376
kmin = 0.20499
flag = 0
k = 0.20696,    H/|P| = -0.91433

beta = 0.44966    alpha = 0.25704
phiA = 0.24966    phiB = 0.59202

[-0.36591385 -0.23596103 -0.18332676  0.24966092]
[ -2.91593428e-01  -3.83639506e-04   2.09316392e-01   5.92023535e-01]
(array([[-0.68798967, -0.22620508, -0.09202508]]), array([-0.0556324 ,  0.18294312, -0.04034453]))

v = [-0.70914966 -0.29915161  0.12079699  0.26285   ]
(-2.5-0.709149658255j)
(-2-0.299151610245j)
(-1.5+0.120796993273j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7089         lcrit =  20.0818 m
   R = -11.7722 kN          S =  -3.3393 kN
  MA =   0.0000            MB =  15.7245
 muA =   0.0000           muB =   0.0640
kmin = 0.10051
flag = 0
k = 0.15076,    H/|P| = -0.95454

beta = -0.37667    alpha = -0.27640
phiA = -0.40295    phiB = -0.32548
Element 1
 dAB =   5.7931         lcrit =  20.5241 m
   R = -11.5861 kN          S =  -1.7330 kN
  MA =  15.7245            MB =  25.7639
 muA =   0.0654           muB =   0.1072
kmin = 0.16832
flag = 0
k = 0.16838,    H/|P| = -0.94329

beta = -0.19001    alpha = -0.14848
phiA = -0.30916    phiB = -0.05110
Element 2
 dAB =   7.0924         lcrit =  21.5026 m
   R = -10.6386 kN          S =   0.8567 kN
  MA =  25.7639            MB =  19.6876
 muA =   0.1123           muB =   0.0858
kmin = 0.17634
flag = 0
flag = 1
k = 0.17634,    lmbd = 0.22318,    f = 0.10666,
k = 0.22634,    lmbd = 0.50545,    f = -0.17561,
k = 0.27634,    lmbd = 0.59923,    f = -0.26939,
k = 0.32634,    lmbd = 0.64913,    f = -0.31929,
k = 0.37634,    lmbd = 0.67487,    f = -0.34503,
k = 0.42634,    lmbd = 0.68432,    f = -0.35448,
k = 0.47634,    lmbd = 0.68127,    f = -0.35143,
k = 0.52634,    lmbd = 0.66763,    f = -0.33779,
k = 0.57634,    lmbd = 0.64429,    f = -0.31445,
k = 0.62634,    lmbd = 0.61139,    f = -0.28155,
k = 0.67634,    lmbd = 0.56847,    f = -0.23864,
k = 0.72634,    lmbd = 0.51442,    f = -0.18458,
k = 0.77634,    lmbd = 0.44713,    f = -0.11729,
k = 0.82634,    lmbd = 0.36293,    f = -0.03309,
k = 0.87634,    lmbd = 0.25487,    f = 0.07497,
k = 0.92634,    lmbd = 0.10821,    f = 0.22162,
k = 0.97634,    lmbd = 0.13968,    f = 0.19016,
k = 0.18405,    H/|P| = -0.93225

beta = 0.12187    alpha = 0.08036
phiA = -0.06392    phiB = 0.29289
Element 3
 dAB =   8.6193         lcrit =  23.5313 m
   R =  -8.6193 kN          S =   2.2656 kN
  MA =  19.6876            MB =   0.1599
 muA =   0.0939           muB =   0.0008
kmin = 0.14746
flag = 0
k = 0.16155,    H/|P| = -0.94780

beta = 0.41357    alpha = 0.25704
phiA = 0.28858    phiB = 0.48105

[-0.40295224 -0.30916217 -0.06392194  0.28857952]
[-0.32548098 -0.05110498  0.2928942   0.48104813]
(array([[-0.70914966, -0.29915161,  0.12079699]]), array([-0.01631881,  0.01281696,  0.00431468]))

v = [-0.67520063 -0.31414199  0.12112496  0.26285   ]
(-2.5-0.675200626429j)
(-2-0.314141986997j)
(-1.5+0.121124958929j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7231         lcrit =  20.0866 m
   R = -11.8078 kN          S =  -3.1890 kN
  MA =   0.0000            MB =  15.0622
 muA =   0.0000           muB =   0.0613
kmin = 0.09630
flag = 0
k = 0.14402,    H/|P| = -0.95852

beta = -0.36405    alpha = -0.26379
phiA = -0.38931    phiB = -0.31485
Element 1
 dAB =   5.7824         lcrit =  20.5315 m
   R = -11.5648 kN          S =  -1.8165 kN
  MA =  15.0622            MB =  25.5658
 muA =   0.0627           muB =   0.1064
kmin = 0.16708
flag = 0
k = 0.16736,    H/|P| = -0.94398

beta = -0.19764    alpha = -0.15580
phiA = -0.31339    phiB = -0.06129
Element 2
 dAB =   7.0855         lcrit =  21.5129 m
   R = -10.6282 kN          S =   0.8582 kN
  MA =  25.5658            MB =  19.4848
 muA =   0.1115           muB =   0.0849
kmin = 0.17507
flag = 0
flag = 1
k = 0.17507,    lmbd = 0.22417,    f = 0.10519,
k = 0.22507,    lmbd = 0.50710,    f = -0.17774,
k = 0.27507,    lmbd = 0.60090,    f = -0.27154,
k = 0.32507,    lmbd = 0.65075,    f = -0.32139,
k = 0.37507,    lmbd = 0.67642,    f = -0.34706,
k = 0.42507,    lmbd = 0.68581,    f = -0.35645,
k = 0.47507,    lmbd = 0.68271,    f = -0.35335,
k = 0.52507,    lmbd = 0.66905,    f = -0.33969,
k = 0.57507,    lmbd = 0.64569,    f = -0.31633,
k = 0.62507,    lmbd = 0.61280,    f = -0.28344,
k = 0.67507,    lmbd = 0.56993,    f = -0.24057,
k = 0.72507,    lmbd = 0.51594,    f = -0.18658,
k = 0.77507,    lmbd = 0.44878,    f = -0.11942,
k = 0.82507,    lmbd = 0.36479,    f = -0.03543,
k = 0.87507,    lmbd = 0.25710,    f = 0.07226,
k = 0.92507,    lmbd = 0.11121,    f = 0.21815,
k = 0.97507,    lmbd = 0.13384,    f = 0.19552,
k = 0.18254,    H/|P| = -0.93336

beta = 0.12174    alpha = 0.08058
phiA = -0.06223    phiB = 0.29094
Element 3
 dAB =   8.6081         lcrit =  23.5466 m
   R =  -8.6081 kN          S =   2.2626 kN
  MA =  19.4848            MB =   0.0078
 muA =   0.0930           muB =   0.0000
kmin = 0.14604
flag = 0
k = 0.16067,    H/|P| = -0.94837

beta = 0.41322    alpha = 0.25704
phiA = 0.29024    phiB = 0.47892

[-0.38931435 -0.31338993 -0.06222955  0.29024463]
[-0.31485315 -0.06128556  0.29094377  0.47891984]
(array([[-0.67520063, -0.31414199,  0.12112496]]), array([-0.00146322,  0.00094399,  0.00069914]))

v = [-0.67127963 -0.31542524  0.12066485  0.26285   ]
(-2.5-0.671279632012j)
(-2-0.315425239385j)
(-1.5+0.120664854317j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7246         lcrit =  20.0875 m
   R = -11.8114 kN          S =  -3.1715 kN
  MA =   0.0000            MB =  14.9839
 muA =   0.0000           muB =   0.0610
kmin = 0.09581
flag = 0
k = 0.14324,    H/|P| = -0.95897

beta = -0.36255    alpha = -0.26232
phiA = -0.38769    phiB = -0.31359
Element 1
 dAB =   5.7812         lcrit =  20.5326 m
   R = -11.5623 kN          S =  -1.8235 kN
  MA =  14.9839            MB =  25.5261
 muA =   0.0623           muB =   0.1062
kmin = 0.16683
flag = 0
k = 0.16714,    H/|P| = -0.94413

beta = -0.19826    alpha = -0.15642
phiA = -0.31357    phiB = -0.06227
Element 2
 dAB =   7.0847         lcrit =  21.5144 m
   R = -10.6270 kN          S =   0.8549 kN
  MA =  25.5261            MB =  19.4696
 muA =   0.1113           muB =   0.0849
kmin = 0.17481
flag = 0
flag = 1
k = 0.17481,    lmbd = 0.22388,    f = 0.10542,
k = 0.22481,    lmbd = 0.50714,    f = -0.17784,
k = 0.27481,    lmbd = 0.60103,    f = -0.27173,
k = 0.32481,    lmbd = 0.65091,    f = -0.32161,
k = 0.37481,    lmbd = 0.67660,    f = -0.34730,
k = 0.42481,    lmbd = 0.68601,    f = -0.35671,
k = 0.47481,    lmbd = 0.68292,    f = -0.35362,
k = 0.52481,    lmbd = 0.66927,    f = -0.33997,
k = 0.57481,    lmbd = 0.64593,    f = -0.31663,
k = 0.62481,    lmbd = 0.61306,    f = -0.28376,
k = 0.67481,    lmbd = 0.57021,    f = -0.24091,
k = 0.72481,    lmbd = 0.51625,    f = -0.18695,
k = 0.77481,    lmbd = 0.44913,    f = -0.11983,
k = 0.82481,    lmbd = 0.36520,    f = -0.03590,
k = 0.87481,    lmbd = 0.25761,    f = 0.07169,
k = 0.92481,    lmbd = 0.11189,    f = 0.21741,
k = 0.97481,    lmbd = 0.13245,    f = 0.19685,
k = 0.18229,    H/|P| = -0.93354

beta = 0.12143    alpha = 0.08027
phiA = -0.06226    phiB = 0.29042
Element 3
 dAB =   8.6065         lcrit =  23.5487 m
   R =  -8.6065 kN          S =   2.2622 kN
  MA =  19.4696            MB =  -0.0003
 muA =   0.0929           muB =  -0.0000
kmin = 0.14594
flag = 0
k = 0.16061,    H/|P| = -0.94841

beta = 0.41323    alpha = 0.25704
phiA = 0.29041    phiB = 0.47881

[-0.3876875  -0.31357415 -0.0622649   0.29040621]
[-0.31358706 -0.06226998  0.29041906  0.4788069 ]
(array([[-0.67127963, -0.31542524,  0.12066485]]), array([ -1.29067629e-05,  -5.07810850e-06,   1.28527629e-05]))

v = [-0.6712316  -0.31543261  0.12063918  0.26285   ]
(-2.5-0.671231602674j)
(-2-0.315432606012j)
(-1.5+0.120639178125j)
(-1+0.26285j)
Elastica Rod 0
***************
Element 0
 dAB =   4.7246         lcrit =  20.0875 m
   R = -11.8114 kN          S =  -3.1713 kN
  MA =   0.0000            MB =  14.9830
 muA =   0.0000           muB =   0.0610
kmin = 0.09580
flag = 0
k = 0.14323,    H/|P| = -0.95897

beta = -0.36253    alpha = -0.26231
phiA = -0.38766    phiB = -0.31357
Element 1
 dAB =   5.7812         lcrit =  20.5326 m
   R = -11.5623 kN          S =  -1.8236 kN
  MA =  14.9830            MB =  25.5253
 muA =   0.0623           muB =   0.1062
kmin = 0.16683
flag = 0
k = 0.16714,    H/|P| = -0.94413

beta = -0.19826    alpha = -0.15643
phiA = -0.31357    phiB = -0.06228
Element 2
 dAB =   7.0847         lcrit =  21.5144 m
   R = -10.6270 kN          S =   0.8547 kN
  MA =  25.5253            MB =  19.4701
 muA =   0.1113           muB =   0.0849
kmin = 0.17480
flag = 0
flag = 1
k = 0.17480,    lmbd = 0.22386,    f = 0.10544,
k = 0.22480,    lmbd = 0.50713,    f = -0.17783,
k = 0.27480,    lmbd = 0.60102,    f = -0.27172,
k = 0.32480,    lmbd = 0.65091,    f = -0.32161,
k = 0.37480,    lmbd = 0.67660,    f = -0.34730,
k = 0.42480,    lmbd = 0.68601,    f = -0.35671,
k = 0.47480,    lmbd = 0.68292,    f = -0.35363,
k = 0.52480,    lmbd = 0.66928,    f = -0.33998,
k = 0.57480,    lmbd = 0.64594,    f = -0.31664,
k = 0.62480,    lmbd = 0.61306,    f = -0.28376,
k = 0.67480,    lmbd = 0.57021,    f = -0.24091,
k = 0.72480,    lmbd = 0.51626,    f = -0.18696,
k = 0.77480,    lmbd = 0.44914,    f = -0.11984,
k = 0.82480,    lmbd = 0.36521,    f = -0.03591,
k = 0.87480,    lmbd = 0.25762,    f = 0.07168,
k = 0.92480,    lmbd = 0.11190,    f = 0.21740,
k = 0.97480,    lmbd = 0.13242,    f = 0.19688,
k = 0.18229,    H/|P| = -0.93354

beta = 0.12142    alpha = 0.08025
phiA = -0.06228    phiB = 0.29040
Element 3
 dAB =   8.6065         lcrit =  23.5488 m
   R =  -8.6065 kN          S =   2.2622 kN
  MA =  19.4701            MB =   0.0003
 muA =   0.0929           muB =   0.0000
kmin = 0.14594
flag = 0
k = 0.16061,    H/|P| = -0.94841

beta = 0.41323    alpha = 0.25704
phiA = 0.29040    phiB = 0.47882

[-0.38766495 -0.31356889 -0.06227643  0.29040492]
[-0.31356916 -0.06227674  0.29040464  0.47881569]
(array([[-0.6712316 , -0.31543261,  0.12063918]]), array([ -2.71160760e-07,  -3.03648175e-07,  -2.78490747e-07]))


In [266]:
g.plot()


beta = -0.36253    alpha = -0.26231
phiA = -0.38766    phiB = -0.31357
beta = -0.19826    alpha = -0.15643
phiA = -0.31357    phiB = -0.06228
beta = 0.12142    alpha = 0.08025
phiA = -0.06228    phiB = 0.29040
beta = 0.41323    alpha = 0.25704
phiA = 0.29040    phiB = 0.47882

In [266]:


In [266]:


In [266]:


In [ ]: