Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- maxNodes=1000;
- ClearAll[additionalNodes];
- additionalNodes[nodes_, maxNodes_] := Module[{n},
- If[Length[nodes] > maxNodes,
- SMCError = {"Maximum number of nodes:", maxNodes, "Nodes:", nodes};
- SMCAbort["Given number of nodes exceeded the maximum number.", "",""];
- ];
- Join[ConstantArray[Null, maxNodes - Length[nodes]]]];
- SMSTemplate[
- "SMSTopology" -> "QX"
- , "SMSNoNodes" -> maxNodes
- , "SMSDOFGlobal" -> 2
- , "SMSNodeID" -> "D -D"
- ,...,
- , "SMSAdditionalNodes" -> Function[additionalNodes[{##},maxNodes]]
- , "SMSMMAInitialisation" -> {{Definition[additionalNodes]}, Null}
- ]
- nNodes [RightTee] SMSLastTrueNode[];
- nDOF [RightTee] SMSLastTrueDOF[];
- nDOFNode = SMSNoDimensions;
- pe [DoubleRightTee] SMSArray[nDOF, Function[{dof}, SMSIO["Nodal DOFs"[(dof - 1)/nDOFNode + 1, SMSMod[dof - 1, nDOFNode] + 1]]]];`
- XNode [RightTee] Table[SMSReal[nd$$[node, "X", j]], {j, SMSNoDimensions}];
- uNode [DoubleRightTee] Table[SMSPart[pe, (node - 1) nDOFNode + j], {j, nDOFNode}];
- SMSDo[Rgi [DoubleRightTee] SMSD[W, pe, i, "Constant"->SMSVariables[pseudoWConstants]];
- SMSIO[Rgi, "Add to", "Residual"[i]];
- SMSDo[
- Kgij [DoubleRightTee]SMSD[Rgi, [DoubleStruckP]e, j];
- SMSIO[Kgij, "Add to", "Tangent"[i, j]];
- , {j, i, nDOF}];
- , {i, 1, nDOF}];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement