Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. maxNodes=1000;
  2. ClearAll[additionalNodes];
  3. additionalNodes[nodes_, maxNodes_] := Module[{n},
  4. If[Length[nodes] > maxNodes,
  5. SMCError = {"Maximum number of nodes:", maxNodes, "Nodes:", nodes};
  6. SMCAbort["Given number of nodes exceeded the maximum number.", "",""];
  7. ];
  8. Join[ConstantArray[Null, maxNodes - Length[nodes]]]];
  9.  
  10. SMSTemplate[
  11. "SMSTopology" -> "QX"
  12. , "SMSNoNodes" -> maxNodes
  13. , "SMSDOFGlobal" -> 2
  14. , "SMSNodeID" -> "D -D"
  15. ,...,
  16. , "SMSAdditionalNodes" -> Function[additionalNodes[{##},maxNodes]]
  17. , "SMSMMAInitialisation" -> {{Definition[additionalNodes]}, Null}
  18. ]
  19.  
  20. nNodes [RightTee] SMSLastTrueNode[];
  21. nDOF [RightTee] SMSLastTrueDOF[];
  22. nDOFNode = SMSNoDimensions;
  23.  
  24. pe [DoubleRightTee] SMSArray[nDOF, Function[{dof}, SMSIO["Nodal DOFs"[(dof - 1)/nDOFNode + 1, SMSMod[dof - 1, nDOFNode] + 1]]]];`
  25.  
  26. XNode [RightTee] Table[SMSReal[nd$$[node, "X", j]], {j, SMSNoDimensions}];
  27. uNode [DoubleRightTee] Table[SMSPart[pe, (node - 1) nDOFNode + j], {j, nDOFNode}];
  28.  
  29. SMSDo[Rgi [DoubleRightTee] SMSD[W, pe, i, "Constant"->SMSVariables[pseudoWConstants]];
  30. SMSIO[Rgi, "Add to", "Residual"[i]];
  31. SMSDo[
  32. Kgij [DoubleRightTee]SMSD[Rgi, [DoubleStruckP]e, j];
  33. SMSIO[Kgij, "Add to", "Tangent"[i, j]];
  34. , {j, i, nDOF}];
  35. , {i, 1, nDOF}];
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement