User login

Navigation

You are here

Parallel computing for non-local damage model in abaqus

Hello all,I am simulating epoxy damage using a non-local damage model through abaqus user subroutine UMAT.Based on the idea of Prof. Bazant's non-local treatment, the non-local damage at a particular integration point is obtained by averaging the local damage values of all the integration points within a characteristic length (Lc) of that point. Therefore, I created a common block in UMAT which stores the coordinates and local damage values of all the integration points in the model, and in each step I use the damage value from the previous step for the non-local treatment. In this way, I can access and update the damage value for all integration points of the FEM model in UMAT.  However, because of the use of common block, I am not able to use parallel execution in abaqus (this is explained in "3.5.1 - Parallel execution: overview" of Abaqus Analysis User's Guide). Using single processor gives the correct result. However, when using multiple processors with common block in UMAT, it seems that each processor only updates the common block for the integration points which are allocated to itself, which makes the nonlocal averaging of damage incorrect because some integration points within Lc may be missed out if they are not allocated to the same processor where UMAT is called. I also tried to make a pre-mapping between all the integration points and different processors but I am even not able to know which processor is the current integration point is allocated to...  Does anyone know if there is any method of exchanging information between different processors in abaqus (like MPI_ALLREDUCE)? Or is there any way to do the non-local damage model without using common block in abaqus? My goal is to speed up the simulation by using multiple processors. Any comment is appreciated. Thanks,Xiaofan 

Comments

One solution is to use the ABAQUS URDFIL subroutine to update the common block after each increment. This subroutine is automatically called at the end of any increment in which new information is written to the results file. In the next increment, each processor can access that common block for the converged results in previous increment.  To make sure all processors update and access the same common block, they need to share the same memory, which can be guaranteed by requesting processors from the same computation node if we are running the analysis on clusters. 

Subscribe to Comments for "Parallel computing for non-local damage model in abaqus"

Recent comments

More comments

Syndicate

Subscribe to Syndicate