DISP SUBROUTINE does nothing!
DISP SUBROUTINE does nothing!
(OP)
Hi everybody!
I would like to use the DISP subroutine to impose displacements in some nodes. Since I am new with this subroutine I am trying with a simple experiment....
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION U(3),TIME(2),COORDS(3)
C
PRINT*,'----the program goes past this point-----'
IF(NODE.EQ.10.AND.JDOF.EQ.1) THEN
U(1)=2
ENDIF
RETURN
END
.... but it simply does not work. It does not even write the '----the program goes past this point-----' line. Any ideas about what I'm missing?
Thank you!
I would like to use the DISP subroutine to impose displacements in some nodes. Since I am new with this subroutine I am trying with a simple experiment....
SUBROUTINE DISP(U,KSTEP,KINC,TIME,NODE,NOEL,JDOF,COORDS)
C
INCLUDE 'ABA_PARAM.INC'
C
DIMENSION U(3),TIME(2),COORDS(3)
C
PRINT*,'----the program goes past this point-----'
IF(NODE.EQ.10.AND.JDOF.EQ.1) THEN
U(1)=2
ENDIF
RETURN
END
.... but it simply does not work. It does not even write the '----the program goes past this point-----' line. Any ideas about what I'm missing?
Thank you!





RE: DISP SUBROUTINE does nothing!
It looks like the subroutine is not called by Abaqus during calculation.
Do you have "USER" option set for *BOUNDARY keyword?
Regards,
Bartosz
RE: DISP SUBROUTINE does nothing!
Thank you for you answer
I have *BOUNDARY, USER in my input file but it does no work. I have also tried
*BOUNDARY, USER
10,1,1
but it does not work either. Any ideas?
Thank you all!
Regards
RE: DISP SUBROUTINE does nothing!
I have got one more idea.
You mentioned the message under PRINT statement is not print at all.
Do you run analysis with "interactive" option to sent all abaqus message to a console?
Could you post your subrotine and inputdeck, please?
Regards,
Bartosz
RE: DISP SUBROUTINE does nothing!
when I use other subroutines i get this messages in my .log file. Here is my input file
*Heading
** Job name: P1 Model name: Model-1
** Generated by: Abaqus/CAE 6.9-1
*Preprint, echo=NO, model=NO, history=NO, contact=NO
**
** PARTS
**
*Part, name=Part-1
*End Part
**
**
** ASSEMBLY
**
*Assembly, name=Assembly
**
*Instance, name=Part-1-1, part=Part-1
*Node
1, 250., 250.
2, -250., 250.
3, -250., -250.
4, 250., -250.
5, 150., 250.
6, 50., 250.
7, -50., 250.
8, -150., 250.
9, -250., 150.
10, -250., 50.
11, -250., -50.
12, -250., -150.
13, -150., -250.
14, -50., -250.
15, 50., -250.
16, 150., -250.
17, 250., -150.
18, 250., -50.
19, 250., 50.
20, 250., 150.
21, 149.841141, -50.4932442
22, 49.8204613, 150.103104
23, -49.9058075, 150.056396
24, -149.659592, -150.633453
25, -49.7323875, -150.778061
26, 149.78331, 150.00351
27, -149.547684, 49.7620125
28, -149.616501, -50.4850159
29, -49.6826248, -50.7036057
30, 150.066208, -150.457352
31, 149.763687, 49.880291
32, 50.0062866, 49.7244682
33, 50.1059875, -50.6545715
34, -49.7329483, 49.7550774
35, -149.766846, 150.030121
36, 50.1085968, -150.5383
*Element, type=CPS4R
1, 31, 21, 18, 19
2, 18, 21, 30, 17
3, 36, 33, 29, 25
4, 23, 22, 6, 7
5, 10, 27, 35, 9
6, 2, 9, 35, 8
7, 23, 35, 27, 34
8, 29, 28, 24, 25
9, 13, 24, 12, 3
10, 14, 25, 24, 13
11, 4, 17, 30, 16
12, 31, 26, 22, 32
13, 6, 22, 26, 5
14, 20, 1, 5, 26
15, 23, 7, 8, 35
16, 21, 33, 36, 30
17, 28, 27, 10, 11
18, 12, 24, 28, 11
19, 23, 34, 32, 22
20, 25, 14, 15, 36
21, 20, 26, 31, 19
22, 34, 27, 28, 29
23, 33, 32, 34, 29
24, 16, 30, 36, 15
25, 31, 32, 33, 21
*Nset, nset=_PickedSet2, internal, generate
1, 36, 1
*Elset, elset=_PickedSet2, internal, generate
1, 25, 1
** Section: Section-1
*Solid Section, elset=_PickedSet2, material=Material-1
,
*End Instance
**
*Nset, nset=_PickedSet7, internal, instance=Part-1-1, generate
1, 20, 1
*Elset, elset=_PickedSet7, internal, instance=Part-1-1
1, 2, 4, 5, 6, 9, 10, 11, 13, 14, 15, 17, 18, 20, 21, 24
*Nset, nset=Set-1, instance=Part-1-1
34,
*End Assembly
**
** MATERIALS
**
*Material, name=Material-1
*Elastic
70., 0.3
**
** BOUNDARY CONDITIONS
**
** Name: BC-1 Type: Symmetry/Antisymmetry/Encastre
*Boundary
_PickedSet7, PINNED
** ----------------------------------------------------------------
**
** STEP: Step-1
**
*Step, name=Step-1
*Static
1., 1., 1e-05, 1.
**
** BOUNDARY CONDITIONS
**
** Name: BC-2 Type: Displacement/Rotation
*Boundary,user
**
** OUTPUT REQUESTS
**
*Restart, write, frequency=0
**
** FIELD OUTPUT: F-Output-1
**
*Output, field, variable=PRESELECT
**
** HISTORY OUTPUT: H-Output-1
**
*Output, history, variable=PRESELECT
*End Step
and my subroutine file is on the first message. I have never heard of the "interactive option". I really appreciate your help!
Thank you very much! I wait for your answer
Regards,
RE: DISP SUBROUTINE does nothing!
Thank you for the inpudeck file.
I see you have user boundary keyword but you have no information for which nodes the boundary condition is active.
In line following *BOUNDARY keyword you need to give information about nodes id and degree of freedom.
The syntax is:
CODE
node_id_1, first_DOF, last_DOF
node_id_2, first_DOF, last_DOF
...
node_id_n, first_DOF, last_DOF
According to your subroutine it should be:
CODE
10, 1, 1
You can run any abaqus analysis without Abaqus/CAE. Just open system console, go to directory with *.inp file and use command:
abaqus user=subroutine_file.for job=inputdeck_file
If you want to get information about analysis on console you need to add interactive option otherwise the job will be running in the background:
abaqus interactive user=subroutine_file.for job=inputdeck_file
More information you will find in abaqus documentation: 3.2 Execution procedures
Regards,
Bartosz
RE: DISP SUBROUTINE does nothing!
thank you very much!! It works perfectly now, curiosly it works only if i make a node-set with node 10.
If i write this code,
*BOUNDARY, USER
10, 1, 1
i get an error relating to the assembly.
Any idea on this problem?
Again than you very much for your help.
Sincerely,
RE: DISP SUBROUTINE does nothing!
In Abaqus your model can be defined in terms of assembly of part instance, as your example model.
Depent how your model looks you need to use following syntax:
CODE
** for model without assembly
**
*BOUNDARY, USER
global_node_id, first_DOF, last_DOF
name_of_nset, first_DOF, last_DOF
**
** for model with assembly
**
*BOUNDARY, USER
assembly_name.instance_name.node_id, first_DOF, last_DOF
assembly_name.instance_name.nset_name, first_DOF, last_DOF
**
Please remember, When you use model with assembly Abaqus will be using different nodes id during calculation (global id) than you have in your inputdeck (local id).
To obtain global node id for specific local id you need to use GETPARTINFO or GETINTERNAL routines.
Example how to use them you can find in Abaqus documentation: Abaqus Verification Manual, 4.1.2 DISP
Regards,
Bartosz
RE: DISP SUBROUTINE does nothing!
thank you very much for your explanation. I have learnt a lot with your help! Thanks,
Regards