@@ -1036,7 +1036,10 @@ def BCMAssembly(X,T,b,F,j,fixedx,xy):
10361036 return FBCM
10371037
10381038
1039- def applying_Fix_q (total_loading , X , T , b , box , F , analysis_type , * args ):
1039+ def applying_Fix_q (total_loading , X , T , b , box , F , analysis_type , Nincr1 , * args ):
1040+
1041+ Nincr = Nincr1 [0 ]
1042+ curr_incr = Nincr1 [1 ]
10401043
10411044 isthereM = len (args )
10421045 if isthereM != 0 :
@@ -1149,7 +1152,13 @@ def applying_Fix_q(total_loading, X, T, b, box, F, analysis_type, *args):
11491152
11501153 ENFRCDS1 = np .array ([ENFRCDS [:, np .arange (0 , 5 )]])
11511154 ENFRCDS2 = np .array ([ENFRCDS [:, np .arange (5 , 10 )]])
1152- ENFRCDS1 = ENFRCDS1 [0 ]
1155+ ENFRCDS1 = ENFRCDS1 [0 ]/ Nincr
1156+ #load_step = ENFRCDS1
1157+ #if curr_incr != 0:
1158+ # i=0
1159+ # while i<curr_incr:
1160+ # ENFRCDS1 += load_step
1161+ # i+=1
11531162 ENFRCDS2 = ENFRCDS2 [0 ]
11541163 x1 = box [0 , 0 ]
11551164 y1 = box [0 , 1 ]
@@ -1212,16 +1221,17 @@ def applying_Fix_q(total_loading, X, T, b, box, F, analysis_type, *args):
12121221 elif boundaryconditions [0 ] == 3 :
12131222 F [border1 [np .arange (3 , border1 .size , 6 )] - 1 , :] += BCMAssembly (X , T , b1 , MY1 , 2 , x1 , 1 )
12141223 F [border1 [np .arange (4 , border1 .size , 6 )] - 1 , :] += BCMAssembly (X , T , b1 , MXY1 , 2 , x1 , 2 )
1215- elif boundaryconditions [0 ] == 4 :
1216- srch = np .nonzero (ENFRCDS2 [0 , :])
1217- for c in srch [0 ]:
1218- if isthereM != 0 :
1219- M [border1 [np .arange (c , border1 .size , 6 )] - 1 , :] = 0
1220- M [np .ix_ (border1 [np .arange (c , border1 .size , 6 )] - 1 ,
1221- border1 [np .arange (c , border1 .size , 6 )] - 1 )] -= diag_mat (M [np .ix_ (
1222- border1 [np .arange (c , border1 .size , 6 )] - 1 ,
1223- border1 [np .arange (c , border1 .size , 6 )] - 1 )],analysis_type [0 ,2 ]) - np .eye (
1224- border1 [np .arange (c , border1 .size , 6 )].size )
1224+ #elif boundaryconditions[0] == 4:
1225+ # srch = np.nonzero(ENFRCDS2[0, :])
1226+ # for c in srch[0]:
1227+ # F[border1[np.arange(c, border1.size, 6)] - 1] = ENFRCDS1[0, c]
1228+ # if isthereM != 0:
1229+ # M[border1[np.arange(c, border1.size, 6)] - 1, :] = 0
1230+ # M[np.ix_(border1[np.arange(c, border1.size, 6)] - 1,
1231+ # border1[np.arange(c, border1.size, 6)] - 1)] -= diag_mat(M[np.ix_(
1232+ # border1[np.arange(c, border1.size, 6)] - 1,
1233+ # border1[np.arange(c, border1.size, 6)] - 1)],analysis_type[0,2]) - np.eye(
1234+ # border1[np.arange(c, border1.size, 6)].size)
12251235
12261236
12271237
@@ -1348,17 +1358,17 @@ def applying_Fix_q(total_loading, X, T, b, box, F, analysis_type, *args):
13481358 M [border1 - 1 , :] = 0
13491359 M [:, border1 - 1 ] = 0
13501360 M [np .ix_ (border1 - 1 , border1 - 1 )] = np .eye (border1 .size )
1351- elif boundaryconditions [1 ] == 4 :
1352- srch = np .nonzero (ENFRCDS2 [1 , :])
1353- for c in srch [0 ]:
1354-
1355- if isthereM != 0 :
1356- M [border2 [np .arange (c , border2 .size , 6 )] - 1 , :] = 0
1357- M [np .ix_ (border2 [np .arange (c , border2 .size , 6 )] - 1 ,
1358- border2 [np .arange (c , border2 .size , 6 )] - 1 )] -= diag_mat (M [np .ix_ (
1359- border2 [np .arange (c , border2 .size , 6 )] - 1 ,
1360- border2 [np .arange (c , border2 .size , 6 )] - 1 )],analysis_type [0 ,2 ]) - np .eye (
1361- border2 [np .arange (c , border2 .size , 6 )].size )
1361+ # elif boundaryconditions[1] == 4:
1362+ # srch = np.nonzero(ENFRCDS2[1, :])
1363+ # for c in srch[0]:
1364+ # F[border2[np.arange(c, border2.size, 6)] - 1] = ENFRCDS1[1, c]
1365+ # if isthereM != 0:
1366+ # M[border2[np.arange(c, border2.size, 6)] - 1, :] = 0
1367+ # M[np.ix_(border2[np.arange(c, border2.size, 6)] - 1,
1368+ # border2[np.arange(c, border2.size, 6)] - 1)] -= diag_mat(M[np.ix_(
1369+ # border2[np.arange(c, border2.size, 6)] - 1,
1370+ # border2[np.arange(c, border2.size, 6)] - 1)],analysis_type[0,2]) - np.eye(
1371+ # border2[np.arange(c, border2.size, 6)].size)
13621372
13631373
13641374 elif boundaryconditions [1 ] == 5 :
@@ -1470,9 +1480,19 @@ def applying_Fix_q(total_loading, X, T, b, box, F, analysis_type, *args):
14701480 F [border3 [np .arange (3 , border3 .size , 6 )] - 1 ] += BCMAssembly (X , T , b3 , MY3 , 2 , x2 , 1 )
14711481 F [border3 [np .arange (4 , border3 .size , 6 )] - 1 ] += BCMAssembly (X , T , b3 , MXY3 , 2 , x2 , 2 )
14721482 if boundaryconditions [1 ] == 2 :
1473-
14741483 F [border2 - 1 ] = 0
14751484
1485+ #elif boundaryconditions[2] == 4:
1486+ # srch = np.nonzero(ENFRCDS2[2, :])
1487+ # for c in srch[0]:
1488+ # F[border3[np.arange(c, border3.size, 6)] - 1] = ENFRCDS1[2, c]
1489+ # if isthereM != 0:
1490+ # M[border3[np.arange(c, border3.size, 6)] - 1, :] = 0
1491+ # M[np.ix_(border3[np.arange(c, border3.size, 6)] - 1,
1492+ # border3[np.arange(c, border3.size, 6)] - 1)] -= diag_mat(M[np.ix_(
1493+ # border3[np.arange(c, border3.size, 6)] - 1,
1494+ # border3[np.arange(c, border3.size, 6)] - 1)],analysis_type[0,2]) - np.eye(
1495+ # border3[np.arange(c, border3.size, 6)].size)
14761496
14771497
14781498 elif boundaryconditions [2 ] == 5 :
@@ -1597,6 +1617,19 @@ def applying_Fix_q(total_loading, X, T, b, box, F, analysis_type, *args):
15971617 F [border1 [np .arange (0 , 6 )] - 1 ] = 0
15981618
15991619
1620+ #elif boundaryconditions[3] == 4:
1621+ # srch = np.nonzero(ENFRCDS2[3, :])
1622+ # for c in srch[0]:
1623+ # F[border4[np.arange(c, border4.size, 6)] - 1] = ENFRCDS1[3, c]
1624+ # if isthereM != 0:
1625+ # M[border4[np.arange(c, border4.size, 6)] - 1, :] = 0
1626+ # M[np.ix_(border4[np.arange(c, border4.size, 6)] - 1,
1627+ # border4[np.arange(c, border4.size, 6)] - 1)] -= diag_mat(M[np.ix_(
1628+ # border4[np.arange(c, border4.size, 6)] - 1,
1629+ # border4[np.arange(c, border4.size, 6)] - 1)],analysis_type[0,2]) - np.eye(
1630+ # border4[np.arange(c, border4.size, 6)].size)
1631+
1632+
16001633 elif boundaryconditions [3 ] == 5 :
16011634
16021635
@@ -1695,3 +1728,130 @@ def applying_Fix_q(total_loading, X, T, b, box, F, analysis_type, *args):
16951728
16961729
16971730 return F
1731+
1732+
1733+ def get_boundaries (X , b , box ):
1734+ ind = 0
1735+ while ind < 4 :
1736+ i = 0
1737+ while i < b .shape [1 ]:
1738+ if b [ind , i ] == 0 :
1739+ if ind == 0 :
1740+ b1 = b [ind , np .arange (0 , i )]
1741+ elif ind == 1 :
1742+ b2 = b [ind , np .arange (0 , i )]
1743+ elif ind == 2 :
1744+ b3 = b [ind , np .arange (0 , i )]
1745+ elif ind == 3 :
1746+ b4 = b [ind , np .arange (0 , i )]
1747+ break
1748+ elif b [ind , i ] != 0 and i == b .shape [1 ] - 1 :
1749+ if ind == 0 :
1750+ b1 = b [ind , np .arange (0 , i + 1 )]
1751+ elif ind == 1 :
1752+ b2 = b [ind , np .arange (0 , i + 1 )]
1753+ elif ind == 2 :
1754+ b3 = b [ind , np .arange (0 , i + 1 )]
1755+ elif ind == 3 :
1756+ b4 = b [ind , np .arange (0 , i + 1 )]
1757+ break
1758+ i += 1
1759+ ind += 1
1760+
1761+ ii = 0
1762+ while ii < b1 .size :
1763+ min = ii
1764+ kk = ii + 1
1765+ while kk < b1 .size :
1766+ if X [b1 [kk ] - 1 , 1 ] < X [b1 [min ] - 1 , 1 ]:
1767+ min = kk
1768+
1769+ kk += 1
1770+ rempl = b1 [min ]
1771+ b1 [min ] = b1 [ii ]
1772+ b1 [ii ] = rempl
1773+ ii += 1
1774+
1775+ ii = 0
1776+ while ii < b2 .size :
1777+ min = ii
1778+ kk = ii + 1
1779+ while kk < b2 .size :
1780+ if X [b2 [kk ] - 1 , 0 ] < X [b2 [min ] - 1 , 0 ]:
1781+ min = kk
1782+
1783+ kk += 1
1784+ rempl = b2 [min ]
1785+ b2 [min ] = b2 [ii ]
1786+ b2 [ii ] = rempl
1787+ ii += 1
1788+
1789+ ii = 0
1790+ while ii < b3 .size :
1791+ min = ii
1792+ kk = ii + 1
1793+ while kk < b3 .size :
1794+ if X [b3 [kk ] - 1 , 1 ] < X [b3 [min ] - 1 , 1 ]:
1795+ min = kk
1796+
1797+ kk += 1
1798+ rempl = b3 [min ]
1799+ b3 [min ] = b3 [ii ]
1800+ b3 [ii ] = rempl
1801+ ii += 1
1802+
1803+ ii = 0
1804+ while ii < b4 .size :
1805+ min = ii
1806+ kk = ii + 1
1807+ while kk < b4 .size :
1808+ if X [b4 [kk ] - 1 , 0 ] < X [b4 [min ] - 1 , 0 ]:
1809+ min = kk
1810+ kk += 1
1811+
1812+ rempl = b4 [min ]
1813+ b4 [min ] = b4 [ii ]
1814+ b4 [ii ] = rempl
1815+ ii += 1
1816+
1817+
1818+ x1 = box [0 , 0 ]
1819+ y1 = box [0 , 1 ]
1820+ x2 = box [1 , 0 ]
1821+ y2 = box [1 , 1 ]
1822+
1823+ border1 = np .zeros ((1 , 6 * b1 .size ))
1824+ ii = 0
1825+ while ii < b1 .size :
1826+ border1 [0 , np .arange (6 * ii , 6 * ii + 6 )] = np .arange (6 * b1 [ii ] - 5 , 6 * b1 [ii ] + 1 )
1827+ ii += 1
1828+ border1 = border1 .astype (int )
1829+ border1 = border1 [0 ]
1830+
1831+ border2 = np .zeros ((1 , 6 * b2 .size ))
1832+ ii = 0
1833+ while ii < b2 .size :
1834+ border2 [0 , np .arange (6 * ii , 6 * ii + 6 )] = np .arange (6 * b2 [ii ] - 5 , 6 * b2 [ii ] + 1 )
1835+ ii += 1
1836+ border2 = border2 .astype (int )
1837+ border2 = border2 [0 ]
1838+
1839+ border3 = np .zeros ((1 , 6 * b3 .size ))
1840+ ii = 0
1841+ while ii < b3 .size :
1842+ border3 [0 , np .arange (6 * ii , 6 * ii + 6 )] = np .arange (6 * b3 [ii ] - 5 , 6 * b3 [ii ] + 1 )
1843+ ii += 1
1844+ border3 = border3 .astype (int )
1845+ border3 = border3 [0 ]
1846+
1847+ border4 = np .zeros ((1 , 6 * b4 .size ))
1848+ ii = 0
1849+ while ii < b4 .size :
1850+ border4 [0 , np .arange (6 * ii , 6 * ii + 6 )] = np .arange (6 * b4 [ii ] - 5 , 6 * b4 [ii ] + 1 )
1851+ ii += 1
1852+ border4 = border4 .astype (int )
1853+ border4 = border4 [0 ]
1854+
1855+ bnd = [border1 , border2 , border3 , border4 ]
1856+
1857+ return bnd
0 commit comments