User login


You are here

User defined MPC

I am using an MPC subroutine (ABAQUS Standard) that will allow me to release nodes along the line of symmetry which also happens to be my defined crack-path when the strain at that point crosses a critical value. This is to simulate crack propagation using the Critical Plastic Strain Fracture Mechanics Model (CPFSM) / Rice-Tracey model.

I am having trouble in defining the MPC in my *.inp file as I am unaware of as to how to define the nodes upon which I intend to impose the MPC. The manual instructs one to type the individual nodes following the command line:


I would be glad if anyone could tell me how am I supposed to define the nodes in the line following the above command line. Also, if anybody has done something similiar to what I have done, I would be glad if you could send me a specimen *.inp and MPC subroutine.


To be more specific, I have written an USDFLD subroutine defining my damage parameter which I will then be using within the MPC. If the multi-axial plastic strain value at the crack-tip crosses this damage value, the MPC is instructs all DOF of the node to be released. I am sure this is on par with what many other people do in order to simulate crack propagation.

Also, note that I am 'not' using Cohesive elements at all which rules out me using a separation law. This is my attempt to incorporate the Rice-Tracey model for crack propagation.

Is it the way I have framed the question that makes my query go unanswered? I strongly believe in the forum's know-how and expertise pool. I am sure this is not a very difficult question for many here who often use MPCs for their analysis in Abaqus.

I require a little guidance on as to how the nodes are referenced within the MPC. I have written the logic behind my node release,ie., if damage crossed 1 ahead of the crack-tip, all DOFs in the node should be released. Assume that my crack-path is defined along the line of symmetry (U2=0) and are numbered from 100 through 200. I just want to know as to how the IEL card is used within the MPC to refer to these nodes and as to how these nodes are externally defined in the *.inp file. I am persisting on this query as I am unable to get convincing information in the manuals, especially on execution of user MPC.

I would be very grateful if I am simply shown a path on accomplishing this or some reference material that I could go through. This is a bottleneck for the completion of a lot of work that has gone into realising CPFSM / Rice-Tracey model in an FE simulation of crack propagation in a simple DCB test.

Atlast its been half a year since I managed to complete my master's thesis with more than a few hiccoughs and stumbles. But in the end its not what is achieved that alone accounts for that smug feeling but the long arduous marathon comp-lab sessions that bring out a lounder sigh of relief. Well the abaqus manual is supposingly very complete but only for those who have used abaqus at a high level before and just want to glimpse back at the manuals for reassurance or a simple reference. Be warned that this is not at all friendly for the bright-eyed beginner. But well, there is nothing like good old trial-n-errors. Below is the answer to my own query that I put forth in this forum but to no avail. Hope this helps anyone who might end up in the same position as I did before. So here goes.

 Now in case one desires to define a multipoint constraint (MPC) along a line of nodes, then there are two options that abaqus offers via a minor alteration in the MPC subroutine. The first one is called the DOF mode and the other is called the NODE mode.For any MPC type, either node sets or individual nodes can be given as input. If the first entry is a node, subsequent entries must be nodes. If the first entry is a node set, subsequent entries can be either node sets or single nodes. The latter option is useful if a degree of freedom at each of a set of nodes depends on a degree of freedom of a
single node, such as may occur in certain symmetry conditions. This is what is used in the model. All the nodes along the crack path are defined under the MPC subroutine with an individual ID called INODE and the elements connecting these nodes are also defined under a specific ID called IEL. It is important that the number of the nodes and the elements are defined with care and that the names match the ASSEMBLY ID of the nodes and not their GLOBAL or LOCAL IDs. This is to avoid an error that generally occurs due to the input file reader being unable to recognize the ASSEMBLY ID of the nodes. An effort had to be made to ensure that the ASSEMBLY ID and the GLOBAL ID are the same in the model as the MPC had a constraint identifier called JTYPE which stores the nodal constraint information on the GLOBAL ID. This can be done by removing the ASSEMBLY and INSTANCE steps in the model (*.inp) altogether having a simple node and element set definition along with step definition and boundary conditions. This made the MPC definition much simpler and only a single line of code was required to relate the identifiers with the respective nodes.


How do we find the GLOBAL ID'S to be coded in to the Multi point constraint user subroutine from the Assembly ID?


Hi I have the same problems as yours, do you still remember how you solved it?

Best regards!



I have written a MPC user subroutine for connecting elements of different sizes, which function like constraint'Tie' in Abaqus. The model is 2D, contains 2 instances. Instance 1 (named Part-1-1), is the large element, instance 2( named Part-2-1) is the 2 small elements, they are connected by the user defined MPC subroutine. The model is shown in the attached image, the color means the displacement component U1. Since the model is under simple tension, U1 should be a linear function of coordinate X. But the results showed unexpected U1 value 0 at node 3 of small elements, however at node 2 and 4 the displacement U1 is continuous with that of the large element. Could someone tell me why I obtained this?


I also want to check if my under standing on the data line after the keyword *MPC is correct. 


My understanding is as follows:

*MPC, user, mode=node

 1, dependent node lable, independent node lable ,independent node lable ,independent node lable , etc 

or the second way:

*MPC, user, mode=node

 1, dependent node set, independent node lable ,independent node lable ,independent node lable , etc 

 And in the second way, each node in the dependent node set will be constrained by the following indepent node in the way of contraint JTYPE 1.


In the input file, I defined the MPC constraint using the folling lines:

*MPC, user, mode=node

 1, Part-2-1.5, Part-1-1.2,Part-1-1.4

*MPC, user, mode=node

 1, Part-2-1.3, Part-1-1.2,Part-1-1.4

*MPC, user, mode=node

 1, Part-2-1.1, Part-1-1.2,Part-1-1.4 



My MPC user subroutine is of Node mode, as follows:








     * FIELD(NF,NT,N),LTRAN(N),TRAN(3,3,N)


      IF (JTYPE .EQ. 1) THEN

C   Define shape functions at the interface edge of the large element  

        N2 = (X(2,1)-X(2,3))/(X(2,2)-X(2,3))

        N3 = (X(2,1)-X(2,2))/(X(2,3)-X(2,2))


        A(1,1,1) =  1.

        A(2,2,1) =  1.     

        A(1,1,2) = -N2

        A(2,2,2) = -N2

        A(1,1,3) = -N3

        A(2,2,3) = -N3


        JDOF(1,1) = 1

        JDOF(2,1) = 2

        JDOF(1,2) = 1

        JDOF(2,2) = 2

        JDOF(1,3) = 1

        JDOF(2,3) = 2

      END IF




 Incorrect displacement of U1

I have solve this problem. It is due to the definition of N1,N2 will be automatically be integer, not meeting the requirement of a real number. Thanks all the same!

Hi I want to know the logic behind how the constraints are being done by the MPC subroutine. In Documentation they have given UE(NDEP) which will be updated after each constraint could you please explain that???

I have eqautions of face ,edge and vertex for implementing periodic boundary condition.(slave master pair)

I have used Equation module to implement this equation .

should i use MPC or Equation module is sufficient



Solver problem:zero pivot when processing element ?

i get this warning along with overconstrained checks for several internal nodes when running analysis for model having C3D8RH elements with 3 layers of shell homogeneous sections S4R elements embedded in the matrix also the model had periodic boundary conditions.

but i dont get any such warning if i run analysis for homogeneous solid with PBC condition having C3D20R TET elements

what can be the possible reason ?

i think problem due to using hybrid element which i cant neglect !!

Solver problem:zero pivot when processing element ? - ResearchGate. Available from: [accessed Mar 15, 2016].

Frank Richter's picture

Subscribe to and seek assistance from the
ABAQUS mailing list
Search the archive before posting.

Good luck


Subscribe to Comments for "User defined MPC"

Recent comments

More comments


Subscribe to Syndicate