1
$\begingroup$

How can one simply access the numerical integration coordinates and weights for a given integration code (e.g. 23) without generating the code itself? Is there some command for it? Something similar to SMCFEMTopologyData would be nice, however not for element topology, but rather for the numerical integration code.

Appendix C in "Automation of Finite Element Methods" by Korelc and Wriggers gives these data for most integration codes, but not all cases are covered.

$\endgroup$
2
$\begingroup$

All the Gauss point coordinates and weights of AceFEM are stored in a file "SMSUtility.c", which is located in "C:\Users\$Username\AppData\Roaming\Mathematica\Applications\AceFEM\Include\CDriver" or in your global install directory. They are not accessible anywhere in Mathematica.

If you want you could export them in postprocessing and then acces them from AceFEM as:

position =  Position[SMTDomains[[1, 23]], #][[1, 1]] & /@ {"Xg", "Yg", "wg"}
SMTData[1, "SPP"][[1, ;; , position]]

For this to work you have to export "Xg", "Yg" and "wg"in postprocessing first!

Another option is to write a task called e.g. "IntegrationPoint" (see "USER DEFINED TASKS" chapter in help for details). Task would be defined as:

SMSTemplate[...,"SMSCharSwitch" -> {"IntegrationPoint"},...]; 

 ...

SMSStandardModule["Tasks"];
task \[RightTee] SMSInteger[Task$$];
ng\[RightTee]SMSInteger[es$$["id", "NoIntPoints"]];
SMSSwitch[task
    , -1, SMSExport[{1, 0, 0, 0, 3*ng}, TasksData$$]
];

SMSSwitch[task
    , 1, SMSDo[
      Table[SMSExport[SMSReal[es$$["IntPoints", i, Ig]],RealOutput$$[3*(Ig - 1) + i]], {i, 3}];
      , {Ig, 1, ng}
      ]
];

Which will then be called in AceFEM as SMTTask["IntegrationPoint","Element"->1]

| improve this answer | |
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.