prisms-center / plasticity Goto Github PK
View Code? Open in Web Editor NEWPRISMS Crystal Plasticity and Continuum Plasticity FEM code
License: Other
PRISMS Crystal Plasticity and Continuum Plasticity FEM code
License: Other
Hello there and happy new year to everyone 🎉 !
I had a lot of troubles compiling deal.ii and PRISMS-plasticity, mainly because of linking errors related to MPI or/and conflicts between libraries and compilers and missing environment variables.
According to deal.II documentation, it is recommended not to use --download-mpich
for compiling PETSc, and rather install mpich through package manager. E.g.:
sudo apt-get install mpich*
Here is the script which works for complete install:
git clone -b release https://gitlab.com/petsc/petsc.git petsc
cd petsc
export PETSC_DIR=$PWD
export PETSC_ARCH=August2018
./config/configure.py --with-shared=1 --with-x=0 --with-mpi=1 --download-hypre=1 --download-fblaslapack --with-debugging=0
make all check
export PATH=$PATH:$PETSC_DIR/$PETSC_ARCH/bin
cd
wget https://p4est.github.io/release/p4est-2.2.tar.gz
wget https://www.dealii.org/developer/external-libs/p4est-setup.sh
chmod u+x p4est-setup.sh
./p4est-setup.sh p4est-2.2.tar.gz $PWD/p4est-install
export P4EST_DIR=$PWD/p4est-install
cd
wget https://dealii.43-1.org/downloads/dealii-9.2.0.tar.gz
tar xzf dealii-9.2.0.tar.gz
mkdir build
cd build
export CMAKE_PREFIX_PATH=$HOME/deal_II_AUG18
cmake -DCMAKE_INSTALL_PREFIX=$CMAKE_PREFIX_PATH ../dealii-9.2.0 \
-DDEAL_II_WITH_PETSC=ON -DPETSC_DIR=$PETSC_DIR -DPETSC_ARCH=$PETSC_ARCH \
-DDEAL_II_WITH_P4EST=ON -DP4EST_DIR=$P4EST_DIR \
-DDEAL_II_WITH_MPI=ON
make --jobs=8 install
cd
git clone https://github.com/prisms-center/plasticity.git
cd plasticity
export PRISMSplas=$PWD
cmake .
make -j 8
cd applications/crystalPlasticity
cmake .
make release
Tested on out-of-the box Debian 10 (in WSL) and Linux Mint 18.
I have had a problem with building Plasticity.
In the build instruction ( https://github.com/prisms-center/plasticity ), step 3, with the command make release
, I was getting a large number of errors of the form CMakeFiles/main.dir/main.cc.o:main.cc:function boost::property_tree::ptree_error::~ptree_error(): error: undefined reference to 'std::runtime_error::~runtime_error()'
After several days of troubleshooting (and thinking the problem was with my build of deal.ii), I found the solution (or at least a work around). I needed to run the cmake
command before the make release
command with an additional -DCMAKE_EXE_LINKER_FLAGS="-lstdc++"
At this point, I believe that I have it compiled and functioning correctly, so I don't think I need assistance at this time. However, this may be something that others run into.
Thank you.
Support for mumps
Check for memory scaling in parallel.
/home/fff/deal.ii-candi/trilinos-release-12-10-1/include/Kokkos_View.hpp:1580:3: error: decl-specifier in declaration of deduction guide
constexpr unsigned rank( const View<D , P...> & V ) { return V.Rank; } //Temporary until added to view
^~~~~~~~~
/home/fff/deal.ii-candi/trilinos-release-12-10-1/include/Kokkos_View.hpp:1580:53: error: ‘signed’ or ‘unsigned’ invalid for ‘__dguide_rank’
constexpr unsigned rank( const View<D , P...> & V ) { return V.Rank; } //Temporary until added to view
^
/home/fff/deal.ii-candi/trilinos-release-12-10-1/include/Kokkos_View.hpp:1580:22: error: deduction guide for ‘std::rank< >’ must have trailing return type
Hello there,
It appears that the number of non-linear iterations for each increment is only driven by its maximum value (parameter Maximum non linear iterations
)
Indeed, changing the values for Absolute nonLinear solver tolerance
or Relative nonLinear solver tolerance
seems to have no effect: the number of iterations remains 4 (if Maximum non linear iterations = 4
).
As far as I understand, the computed increment must be updated as soon as one of the aforementioned criteria is reached. Am I misinterpreting something?
Check with crystal elasticity code.
Complete read in of meshes
After compling an example, there is only "stressstrain.txt" file in the result folder, how to get the vtk file to visualize? Thanks.
Hello.
I am interested in crystal plasticity, and using the PRISMS.
But I'm wondering how crystal orientations be treated in the code. I want to ask you as following issues.
First, in the program, it seems to calculate rotation matrix from Rodrigues vector (odfpoint in rotationOperations.cc). However, the program does't use any trigonometric functions. Is it enough by using only the vector components and the dot product?
Second, is the rotation operation conducted against the normal cartesian coordinate, i.e. [1 0 0], [0 1 0], [0 0 1] coordinate? Is a material placed in that space?
Third, the code also uses quaternion, which is obtained by Rodrigues vector given in advance. The conversion will be in rod2quat, written in updateAfterincrement.cc and conducted by using cosine function. According to my research , the conversion requires not only cosine function, but also sine function. Why does the difference occur?
Some issues may be by my misunderstandings or poor abilities, however, I would appreciate it if you answer them.
Dear developers,
Hi! Thanks for sharing the code. I have started using the PRISMS plasticity. First I compiled and executed crystal plasticity cases (using prm.in file) which is fine but I came across the error while compiling any example case from "continuumPlasticity".
After building, when I use "make" command to compile any case (e.g. simpleTension) then the program gives the following error:
[ 75%] Building CXX object CMakeFiles/main.dir/main.cc.o
In file included from /home/muhammad/working_dir/PRISMS_plasticity/plasticity_NEW/plasticity/applications/continuumPlasticity/simpleTension/main.cc:7:0:
/home/muhammad/working_dir/PRISMS_plasticity/plasticity_NEW/plasticity/applications/continuumPlasticity/simpleTension/parameters.h:4:19: error: expected unqualified-id before numeric constant
#define feOrder 1
^
/home/muhammad/working_dir/PRISMS_plasticity/plasticity_NEW/plasticity/applications/continuumPlasticity/simpleTension/../../../src/materialModels/continuumPlasticity/../../../include/userInputParameters.h:21:16: note: in expansion of macro ‘feOrder’
unsigned int feOrder; // Basis function interpolation order (1-linear)
^
/home/muhammad/working_dir/PRISMS_plasticity/plasticity_NEW/plasticity/applications/continuumPlasticity/simpleTension/parameters.h:8:19: error: expected unqualified-id before numeric constant
#define quadOrder 2
^
/home/muhammad/working_dir/PRISMS_plasticity/plasticity_NEW/plasticity/applications/continuumPlasticity/simpleTension/../../../src/materialModels/continuumPlasticity/../../../include/userInputParameters.h:22:16: note: in expansion of macro ‘quadOrder’
unsigned int quadOrder;// Quadrature point order n^3 (2->8 quadrature points)
^
/home/muhammad/working_dir/PRISMS_plasticity/plasticity_NEW/plasticity/applications/continuumPlasticity/simpleTension/parameters.h:42:26: error: expected unqualified-id before numeric constant
#define meshRefineFactor 2
^
/home/muhammad/working_dir/PRISMS_plasticity/plasticity_NEW/plasticity/applications/continuumPlasticity/simpleTension/../../../src/materialModels/continuumPlasticity/../../../include/userInputParameters.h:33:16: note: in expansion of macro ‘meshRefineFactor’
unsigned int meshRefineFactor; // 2^n2^n2^n elements(3->888 =512 elements)
and so on (upto many similar error lines).
Can anyone guide me if I am using wrong method for build and compilation in case of "contunuumPlasticiy"?
Thank you!
error_statement.log
Is it possible to prescribe user-defined displacement boundary conditions node-wise? In the article, I found examples only for uniform and symmetry-type BCs.
Hello, while following the installation procedure I am facing the following issue after "make" command.
/home/kaushikkinny/p4est_files/candi/plasticity/src/ellipticBVP/applyInitialConditions.cc:10:29: error: ‘ZeroFunction’ was not declared in this scope; did you mean ‘dealii::Functions::ZeroFunction’?
10 | ZeroFunction(dim),
| ^~~~~~~~~~~~
| dealii::Functions::ZeroFunction
In file included from /home/kaushikkinny/p4est_files/candi/plasticity/src/ellipticBVP/../../include/dealIIheaders.h:3,
from /home/kaushikkinny/p4est_files/candi/plasticity/src/ellipticBVP/../../include/ellipticBVP.h:6,
from /home/kaushikkinny/p4est_files/candi/plasticity/src/ellipticBVP/applyInitialConditions.cc:2:
/home/kaushikkinny/dealii-candi/deal.II-v9.5.1/include/deal.II/base/function.h:510:9: note: ‘dealii::Functions::ZeroFunction’ declared here
510 | class ZeroFunction : public ConstantFunction<dim, RangeNumberType>
| ^~~~~~~~~~~~
make[2]: *** [CMakeFiles/prisms_cp.dir/build.make:90: CMakeFiles/prisms_cp.dir/src/ellipticBVP/applyInitialConditions.cc.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:166: CMakeFiles/prisms_cp.dir/all] Error 2
make: *** [Makefile:91: all] Error 2
------Adding to this in the previous step cmake:
CMake Deprecation Warning at CMakeLists.txt:5 (CMAKE_MINIMUM_REQUIRED):
Compatibility with CMake < 2.8.12 will be removed from a future version of
CMake.
Update the VERSION argument value or use a ... suffix to tell
CMake that the project does not need compatibility with older versions.
I got this warning does this has anything to do with that..
Please suggest a solution
When I run "cmake ." in "plasticity", CMake Error at CMakeLists.txt:8 (FIND_PACKAGE):
Could not find a package configuration file provided by "deal.II"
(requested version 8.3.0) with any of the following names:
deal.IIConfig.cmake
deal.ii-config.cmake
Add the installation prefix of "deal.II" to CMAKE_PREFIX_PATH or set
"deal.II_DIR" to a directory containing one of the above files. If
"deal.II" provides a separate development package or SDK, be sure it has
been installed.
I am interested in the plasticity modelling for rocks. So I was playing with this code. I compiled the latest dealii version 9.0.0 with petsc and p4est successfully. However, when I try to compile any of the applications in the /applications/continuumPlasticity directory, I get the following error
'deal.II/lac/compressed_simple_sparsity_pattern.h' file not found
And when tried to comment it in the include/dealIIheaders.h and make
'deal.II/lac/petsc_vector.h' file not found
Looks like petsc_vector.h has been renamed to petsc_vector_base.h. However, I could not figure out the problem with the compressed_simple_sparsity_pattern.h.
Appreciate if you could fix these problems.
Best,
Sagar
For periodic microstructure
I have been trying my example simulation by using this command $ mpirun -np nprocs $PLAS_DIR/applications/crystal Plasticity/main prm.in; and it is not executing properly can you please help me with this issue and how can go about my simulation command ?
PRISMS crashes on incorrectly capitalized input lines. The capitalization patterns seem to be somewhat arbitrary, for example:
"Order of finite elements"
"Write Mesh To EPS"
"Output Equivalent strain"
"periodic Tabular time"
"Tabular Periodic Time Table"
It would be nice to not need to worry about these rules when writing input files. Possibly a simple fix to just sanitize (tolower) before comparison to valid commands set.
Hi,
I am trying to run an example simulation with the command : mpirun -n 4 $PLAS_DIR/applications/crystalPlasticity/main prm.prm
But it gives me an error message. I am running it on ubuntu 18 with 4 cores and installed it following the installation manual. can you please help me with this issue and or let me know what I am doing wrong?
sorry about that, i meet the same error on step 3. the log in blew. could help me ? Thanks~
.....
.....
-- Configuring done
-- Generating done
-- Build files have been written to: /home/tam_tianwen_jp/prisms_plas/plasticity/applications/crystalPlasticity
[ 50%] Building CXX object CMakeFiles/main.dir/main.cc.o
/tmp/ccZjTdKQ.ltrans0.ltrans.o::vtable for ellipticBVP<3>: error: undefined reference to 'ellipticBVP<3>::updateBeforeIncrement()'
/tmp/ccZjTdKQ.ltrans0.ltrans.o::vtable for ellipticBVP<3>: error: undefined reference to 'ellipticBVP<3>::updateAfterIncrement()'
/tmp/ccZjTdKQ.ltrans2.ltrans.o::vtable for ellipticBVP<2>: error: undefined reference to 'ellipticBVP<2>::updateBeforeIncrement()'
/tmp/ccZjTdKQ.ltrans2.ltrans.o::vtable for ellipticBVP<2>: error: undefined reference to 'ellipticBVP<2>::updateAfterIncrement()'
/tmp/ccZjTdKQ.ltrans3.ltrans.o::function ellipticBVP<2>::run(): error: undefined reference to 'ellipticBVP<2>::init()'
/tmp/ccZjTdKQ.ltrans3.ltrans.o::function ellipticBVP<3>::run(): error: undefined reference to 'ellipticBVP<3>::init()'
/tmp/ccZjTdKQ.ltrans3.ltrans.o::function ellipticBVP<2>::mesh(): error: undefined reference to 'ellipticBVP<2>::setPeriodicity()'
/tmp/ccZjTdKQ.ltrans3.ltrans.o::function ellipticBVP<3>::mesh(): error: undefined reference to 'ellipticBVP<3>::setPeriodicity()'
/tmp/ccZjTdKQ.ltrans3.ltrans.o::function ellipticBVP<2>::run(): error: undefined reference to 'ellipticBVP<2>::solve()'
/tmp/ccZjTdKQ.ltrans3.ltrans.o::function ellipticBVP<3>::run(): error: undefined reference to 'ellipticBVP<3>::solve()'
/tmp/ccZjTdKQ.ltrans4.ltrans.o::function crystalPlasticity<2>::getElementalValues(dealii::FEValues<2, 2>&, unsigned int, unsigned int, dealii::FullMatrix&, dealii::Vector&): error: undefined reference to 'crystalPlasticity<2>::init2(unsigned int)'
/tmp/ccZjTdKQ.ltrans4.ltrans.o::function crystalPlasticity<2>::getElementalValues(dealii::FEValues<2, 2>&, unsigned int, unsigned int, dealii::FullMatrix&, dealii::Vector&): error: undefined reference to 'crystalPlasticity<2>::init(unsigned int)'
/tmp/ccZjTdKQ.ltrans4.ltrans.o::function crystalPlasticity<2>::getElementalValues(dealii::FEValues<2, 2>&, unsigned int, unsigned int, dealii::FullMatrix&, dealii::Vector&): error: undefined reference to 'crystalPlasticity<2>::calculatePlasticity(unsigned int, unsigned int, unsigned int)'
/tmp/ccZjTdKQ.ltrans4.ltrans.o::function crystalPlasticity<3>::getElementalValues(dealii::FEValues<3, 3>&, unsigned int, unsigned int, dealii::FullMatrix&, dealii::Vector&): error: undefined reference to 'crystalPlasticity<3>::init2(unsigned int)'
/tmp/ccZjTdKQ.ltrans4.ltrans.o::function crystalPlasticity<3>::getElementalValues(dealii::FEValues<3, 3>&, unsigned int, unsigned int, dealii::FullMatrix&, dealii::Vector&): error: undefined reference to 'crystalPlasticity<3>::calculatePlasticity(unsigned int, unsigned int, unsigned int)'
/tmp/ccZjTdKQ.ltrans4.ltrans.o::function crystalPlasticity<3>::getElementalValues(dealii::FEValues<3, 3>&, unsigned int, unsigned int, dealii::FullMatrix&, dealii::Vector&): error: undefined reference to 'crystalPlasticity<3>::init(unsigned int)'
/tmp/ccZjTdKQ.ltrans5.ltrans.o::function crystalPlasticity<2>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<2>::init2(unsigned int)'
/tmp/ccZjTdKQ.ltrans5.ltrans.o::function crystalPlasticity<2>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<2>::calculatePlasticity(unsigned int, unsigned int, unsigned int)'
/tmp/ccZjTdKQ.ltrans5.ltrans.o::function crystalPlasticity<2>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<2>::reorient()'
/tmp/ccZjTdKQ.ltrans5.ltrans.o::function crystalPlasticity<2>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<2>::addToQuadratureOutput(std::vector<double, std::allocator >&)'
/tmp/ccZjTdKQ.ltrans5.ltrans.o::function crystalPlasticity<2>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<2>::writeQuadratureOutput(std::__cxx11::basic_string<char, std::char_traits, std::allocator >, unsigned int)'
/tmp/ccZjTdKQ.ltrans5.ltrans.o::function crystalPlasticity<2>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<2>::init(unsigned int)'
/tmp/ccZjTdKQ.ltrans6.ltrans.o::function crystalPlasticity<3>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<3>::init2(unsigned int)'
/tmp/ccZjTdKQ.ltrans6.ltrans.o::function crystalPlasticity<3>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<3>::calculatePlasticity(unsigned int, unsigned int, unsigned int)'
/tmp/ccZjTdKQ.ltrans6.ltrans.o::function crystalPlasticity<3>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<3>::reorient()'
/tmp/ccZjTdKQ.ltrans6.ltrans.o::function crystalPlasticity<3>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<3>::addToQuadratureOutput(std::vector<double, std::allocator >&)'
/tmp/ccZjTdKQ.ltrans6.ltrans.o::function crystalPlasticity<3>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<3>::writeQuadratureOutput(std::__cxx11::basic_string<char, std::char_traits, std::allocator >, unsigned int)'
/tmp/ccZjTdKQ.ltrans6.ltrans.o::function crystalPlasticity<3>::updateAfterIncrement(): error: undefined reference to 'crystalPlasticity<3>::init(unsigned int)'
/tmp/ccZjTdKQ.ltrans7.ltrans.o::function ellipticBVP<2>::projection(): error: undefined reference to 'ellipticBVP<2>::solveLinearSystem2(dealii::AffineConstraints&, dealii::PETScWrappers::MPI::SparseMatrix&, dealii::PETScWrappers::MPI::Vector&, dealii::PETScWrappers::MPI::Vector&, dealii::PETScWrappers::MPI::Vector&, dealii::PETScWrappers::MPI::Vector&)'
/tmp/ccZjTdKQ.ltrans7.ltrans.o::function ellipticBVP<3>::projection(): error: undefined reference to 'ellipticBVP<3>::solveLinearSystem2(dealii::AffineConstraints&, dealii::PETScWrappers::MPI::SparseMatrix&, dealii::PETScWrappers::MPI::Vector&, dealii::PETScWrappers::MPI::Vector&, dealii::PETScWrappers::MPI::Vector&, dealii::PETScWrappers::MPI::Vector&)'
collect2: error: ld returned 1 exit status
gmake[6]: *** [CMakeFiles/main.dir/build.make:114: main] Error 1
gmake[5]: *** [CMakeFiles/Makefile2:164: CMakeFiles/main.dir/all] Error 2
gmake[4]: *** [Makefile:91: all] Error 2
make[3]: *** [CMakeFiles/release.dir/build.make:72: CMakeFiles/release] Error 2
make[2]: *** [CMakeFiles/Makefile2:112: CMakeFiles/release.dir/all] Error 2
make[1]: *** [CMakeFiles/Makefile2:119: CMakeFiles/release.dir/rule] Error 2
make: *** [Makefile:137: release] Error 2
Originally posted by @Ttw0626 in #38 (comment)
I can't find tet-to-hex converter code and Euler to Rodrigues convert MATLAB script.
Where is it?
Please help me.
Hi,
I can run the crystalPlasticity fcc application example (compression) successfully, but when I set order of quadrature = 1,in the prm.prm file, the program runs slower and crash at the increment of 11th. I dont know why it happened. I have attached the screenshot. Please guide me.
Thanks
Hiphone
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.