def __init__(self, numgridx, numgridy, time): # user interface : type of support and location if numgridx <= 0: self.gridx = 1 print("must greater than 0 ok1") if numgridx > 0: self.gridx = numgridx print("ok2") if numgridy <= 0: self.numgridy = 1 print("ok3") if numgridy > 0: self.gridy = numgridy print("ok4") while self.numsupport < 2: numstrsupport = input("number of support: ") self.numsupport = int(numstrsupport) if self.numsupport >= 2: print("ok number of support", self.numsupport) for i in range(self.numsupport): while self.type != 1 or self.type != 2: type2 = input( "Which type of support Pinned[1],Roller[2]: ") self.type = int(type2) print(self.type) if self.type == 1 or self.type == 2: self.supportinfo.setdefault("type", []).append(self.type) xstr = input("location in directrion x: ") ystr = input("location in direction y: ") x = int(xstr) y = int(ystr) if self.type == 2: constraint = input( "which is constrained displacement (xr or xl or y): " ) self.supportinfo.setdefault("constrained", []).append(constraint) self.sumreactionsupport = self.sumreactionsupport + 1 elif self.type == 1: axis = input( "which is axis of support(xr or xl or y): ") self.supportinfo.setdefault("constrained", []).append(axis) self.sumreactionsupport = self.sumreactionsupport + 2 if x >= 0 and y >= 0: print("ok,the location is: ", x, ",", y) # self.supporttable.append([x,y]) self.support.append((x, y)) break print(self.gridx, "numner of gridx") print(self.gridy, "number of gridy") for r in range(time): nodetable = [] elementtable = [] sum = 0 indexsupport = [] jj2 = [] for i in range(self.gridx): for j in range(self.gridy): randnum = random.randint(0, 1) if randnum == 1: if (i, j) in self.support: print("support location already") else: node = (i, j) nodetable.append(node) print(nodetable, " node selected") self.support.sort() allnode = nodetable + self.support allnode.sort() print(allnode, "allnode") numallnode = len(allnode) for i in reversed(range(numallnode)): sum = sum + i print(sum, "summ") upper = sum lower = len(self.support) - 1 mean = 2 * numallnode - self.sumreactionsupport - 0.5 print(mean, "meannnnnnnn1111") if mean <= lower: mean = lower if mean == upper and mean == lower: element = mean if mean >= lower and mean < upper: sd = 1.5 element = truncnorm((lower - mean) / sd, (upper - mean) / sd, loc=mean, scale=sd) element = element.rvs(1) element = round(element[-1]) element = int(element) print(mean, "meannnnnnnn") print(element, "element after random") for j in self.support: indexsupport.append(allnode.index(j)) print(indexsupport, "indexsupport") false = True while (false): numelement = 0 jj = indexsupport found = 0 elementtable = [] print(jj, "self jj") checker = True while (checker): if len(jj) == 0: print("done") checker = False for a in jj: x = a + 1 for j in range(x, len(allnode)): randnum = random.randint(0, 1) if randnum == 1 and (a, j) not in elementtable: elementtable.append((a, j)) jj2.append(j) numelement = len(elementtable) if numelement == element: jj2 = [] break else: continue break print(element, "and", numelement) print(allnode, "all f*****g node") print(self.sumreactionsupport, "summreaction") print(sum, "summm") print(mean, "meannn") jj = jj2 jj = list(set(jj)) jj2 = [] print(jj, "self.jj") for i in indexsupport: for k in elementtable: if i in k: found = found + 1 break if found == len(self.support) and numelement == element: false = False else: false = True print(elementtable, "first elementtable") elementtable.sort() print(elementtable, "before check overlap") elementtable = overlap.overlap2(allnode, elementtable, self.support) print(elementtable, "after overlap checking , final elementtable") allnode, elementtable = another.changeelement( allnode, elementtable) for i in nodetable: if i not in allnode: nodetable.remove(i) l = Stability.determinancycheck(elementtable, nodetable, self.support, self.supportinfo, self.sumreactionsupport) if l == "unstable": self.unstabledata = self.unstabledata + 1 else: self.stabledata = self.stabledata + 1 Image.drawimage(numgridx, numgridy, allnode, elementtable, self.support, self.supportinfo, l, r) print(self.stabledata, "stable data") print(self.unstabledata, "unstable data")