diff --git a/.gitignore b/.gitignore index fddc013..97d6e7f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,106 +1,107 @@ .DS_Store +test* # Byte-compiled / optimized / DLL files __pycache__/ *.py[cod] *$py.class # C extensions *.so # Distribution / packaging .Python build/ develop-eggs/ dist/ downloads/ eggs/ .eggs/ lib/ lib64/ parts/ sdist/ var/ wheels/ *.egg-info/ .installed.cfg *.egg MANIFEST # PyInstaller # Usually these files are written by a python script from a template # before PyInstaller builds the exe, so as to inject date/other infos into it. *.manifest *.spec # Installer logs pip-log.txt pip-delete-this-directory.txt # Unit test / coverage reports htmlcov/ .tox/ .coverage .coverage.* .cache nosetests.xml coverage.xml *.cover .hypothesis/ .pytest_cache/ # Translations *.mo *.pot # Django stuff: *.log local_settings.py db.sqlite3 # Flask stuff: instance/ .webassets-cache # Scrapy stuff: .scrapy # Sphinx documentation docs/_build/ # PyBuilder target/ # Jupyter Notebook .ipynb_checkpoints # pyenv .python-version # celery beat schedule file celerybeat-schedule # SageMath parsed files *.sage.py # Environments .env .venv env/ venv/ ENV/ env.bak/ venv.bak/ # Spyder project settings .spyderproject .spyproject # Rope project settings .ropeproject # mkdocs documentation /site # mypy .mypy_cache/ diff --git a/docs/examples/Statics/LinearElasticity.cpp b/docs/examples/Statics/LinearElasticity.cpp index dad4bd6..d6ead42 100644 --- a/docs/examples/Statics/LinearElasticity.cpp +++ b/docs/examples/Statics/LinearElasticity.cpp @@ -1,71 +1,71 @@ #include #include int main() { // mesh // ---- GooseFEM::Mesh::Quad4::Regular mesh(5,5); xt::xtensor coor = mesh.coor(); xt::xtensor conn = mesh.conn(); xt::xtensor dofs = mesh.dofs(); xt::xtensor disp = xt::zeros(coor.shape()); xt::xtensor nodesLeft = mesh.nodesLeftEdge(); xt::xtensor nodesRight = mesh.nodesRightEdge(); xt::xtensor nodesTop = mesh.nodesTopEdge(); xt::xtensor nodesBottom = mesh.nodesBottomEdge(); // boundary displacements // ---------------------- xt::xtensor iip = xt::empty({2*nodesLeft.size()+2*nodesBottom.size()}); xt::xtensor u_p = xt::zeros(iip.shape()); size_t i = 0; for ( auto &n : nodesRight ) { iip(i) = dofs(n,0); u_p(i) = 0.1; ++i; } for ( auto &n : nodesTop ) { iip(i) = dofs(n,1); u_p(i) = -0.1; ++i; } for ( auto &n : nodesLeft ) { iip(i) = dofs(n,0); u_p(i) = 0.0; ++i; } for ( auto &n : nodesBottom ) { iip(i) = dofs(n,1); u_p(i) = 0.0; ++i; } // element definition // ------------------ GooseFEM::VectorPartitioned vector(conn, dofs, iip); GooseFEM::MatrixPartitioned K (conn, dofs, iip); GooseFEM::Element::Quad4::QuadraturePlanar elem(vector.asElement(coor)); GMatLinearElastic::Cartesian3d::Material mat(mesh.nelem(), elem.nip(), 1., 1.); // solve // ----- // strain xt::xtensor Eps = elem.symGradN_vector(vector.asElement(disp)); // stress xt::xtensor Sig = mat.Sig(Eps); // tangent xt::xtensor C = mat.Tangent(); // internal force - xt::xtensor fint = vector.asNode(elem.int_gradN_dot_tensor2_dV(Sig)); + xt::xtensor fint = vector.assembleNode(elem.int_gradN_dot_tensor2_dV(Sig)); // stiffness matrix K.assemble(elem.int_gradN_dot_tensor4_dot_gradNT_dV(C)); // solve xt::xtensor u_u = K.solve(vector.asDofs_u(fint), u_p); // assemble to nodal vector disp = vector.asNode(u_u, u_p); // print result std::cout << disp << std::endl; return 0; } diff --git a/docs/examples/Statics/test b/docs/examples/Statics/test deleted file mode 100755 index 5bb7e18..0000000 Binary files a/docs/examples/Statics/test and /dev/null differ