// Paste two meshes. // Nodes and elements of the first mesh // are first in the resulting mesh. // returns resulting mesh after pasting. private FeModel pasteModels() { FeModel mC = new FeModel(CSMGEN.RD, CSMGEN.PR); mC.nDim = mA.nDim; // nodal coordinates of model mC mC.nNod = mA.nNod + mB.nNod - nConnected; mC.newCoordArray(); // Copy nodes of model mA for (int i = 0; i < mA.nNod; i++) { mC.setNodeCoords(i, mA.getNodeCoords(i)); } // Add nodes of model mB for (int i = 0; i < mB.nNod; i++) { mC.setNodeCoords( newNodesB[i], mB.getNodeCoords(i)); } // Element connectivities of model mC mC.nEl = mA.nEl + mB.nEl; mC.elems = new Element[mC.nEl]; // Copy elements of model mA for (int el = 0; el < mA.nEl; el++) { mC.elems[el] = Element.newElement(mA.elems[el].name); mC.elems[el].setElemConnectivities(mA.elems[el].ind); mC.elems[el].matName = mA.elems[el].matName; mC.elems[el].A = mA.elems[el].A; mC.elems[el].t = mA.elems[el].t; mC.elems[el].I = mA.elems[el].I; } // Add elements of mB with renumbered connectivities for (int el = 0; el < mB.nEl; el++) { mC.elems[mA.nEl + el] = Element.newElement(mB.elems[el].name); int[] indel = new int[mB.elems[el].ind.Length]; for (int i = 0; i < mB.elems[el].ind.Length; i++) { indel[i] = newNodesB[mB.elems[el].ind[i] - 1] + 1; } mC.elems[mA.nEl + el].setElemConnectivities(indel); mC.elems[mA.nEl + el].matName = mB.elems[el].matName; mC.elems[mA.nEl + el].A = mB.elems[el].A; mC.elems[mA.nEl + el].t = mB.elems[el].t; mC.elems[mA.nEl + el].I = mB.elems[el].I; } return(mC); }
private FeModel copyMesh() { FeModel mB = new FeModel(CSMGEN.RD, CSMGEN.PR); mB.nDim = mA.nDim; mB.nNod = mA.nNod; mB.newCoordArray(); for (int i = 0; i < mB.nNod; i++) { for (int j = 0; j < mB.nDim; j++) { mB.setNodeCoords(i, mA.getNodeCoords(i)); } } mB.nEl = mA.nEl; mB.elems = new Element[mB.nEl]; for (int el = 0; el < mB.nEl; el++) { mB.elems[el] = Element.newElement(mA.elems[el].name); mB.elems[el].setElemConnectivities(mA.elems[el].ind); mB.elems[el].matName = mA.elems[el].matName; } return(mB); }
private void nodeCoordinates3D() { m3.newCoordArray(); for (int i2 = 0; i2 < m2.nNod; i2++) { int step = (nodeType2[i2] == 0) ? 2 : 1; int n = 2 * nlayers + 1; // Node at rotation axis if (rotate && m2.getNodeCoord(i2, 0) == 0.0) { n = 1; } int nodeNum = nodeNum2[i2] - 1; for (int i = 0; i < n; i += step) { double z = zlayers[i]; double r = m2.getNodeCoord(i2, 0); double y = m2.getNodeCoord(i2, 1); if (rotate) { // Sweeping by rotation around Y double fi = -Math.PI * (zlayers[i]) / 180.0; double[] w = { r *Math.Cos(fi), y, r *Math.Sin(fi) }; m3.setNodeCoords(nodeNum, w); } else { // Sweeping by translation along Z double[] w = { r, y, z }; m3.setNodeCoords(nodeNum, w); } nodeNum++; } } }