You are here
Abaqus 6.13 Help needed - Subroutine UHYPER
Hello all, I am in a desperate need of some expert help
For a newbie at Abaqus with subroutines,
After months of trying, finally installed Abaqus, verified results all passed.
(Abaqus 6.13, Microsoft Visual Studio 2010, Intel Parallel Studio XE 2013)
Couple of questions-
1) Error: Problem during compilation: What is wrong with the code below subroutine uhyper? (A former student had this subroutine working, may be in earlier versions but had it working)
2) 2) Isn’t there some way to check the code before running it in Abaqus (like in Intel XE Compiler and how)
3) 3) Examples provided in the documentation with the subroutines (For some reason can not get it to work, is there step by step method anywhere- searched all around but I guess it’s a secret code or something)
SUBROUTINE UHYPER(BI1,BI2,AJ,U,UI1,UI2,UI3,TEMP,NOEL,CMNAME,
$ INCMPFLAG,NUMSTATEV,STATEV,NUMFIELDV,
$ FIELDV,FIELDVINC,NUMPROPS,PROPS)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION UI1(3),UI2(6),UI3(6),STATEV(*),FIELDV(*),
$ FIELDVINC(*),PROPS(*)
C
PARAMETER (ZERO=0.0D0,ONE=1.0D0, TWO=2.0D0, THREE=3.0D0,SIX=6.0D0)
C
IF (CMNAME(1:6) .EQ. 'ABC') THEN
C10 = 0.08423
C01 = 0.00505
C11 = 0.76506
C20 = 1.5
C30 = 0.04238
D1 = 0.000008928
U=C10*(BI1-THREE)+C01*(BI2-THREE)+(C20*(BI1-THREE)**2)+C11*
$ (BI1-THREE)*(BI2-THREE)+(C30*(BI1-THREE)**3)+(((AJ-ONE)**2)/D1)
UI1(1)=C10+C11*(BI2-THREE)+C20*(TWO*BI1-SIX)+
$ THREE*C30*(BI1-THREE)**2
UI1(2)=C01+C11*(BI1-THREE)
UI1(3)=(TWO*AJ-TWO)/D1
UI2(1)=TWO*C20+THREE*C30*(TWO*BI1-SIX)
UI2(2)= ZERO
UI2(3)=TWO/D1
UI2(4)=C11
UI2(5)=ZERO
UI2(6)=ZERO
UI3(1)=ZERO
UI3(2)=ZERO
UI3(3)=ZERO
UI3(4)=ZERO
UI3(5)=ZERO
UI3(6)=ZERO
ELSE IF (CMNAME(1:5) .EQ. 'DEF') THEN
C10 = 0.00355
C01 = 0.00066
C11 = 0.01868
C20 = 0.02154
C30 = 0.01977
D1=0.000000421
U=C10*(BI1-THREE)+C01*(BI2-THREE)+(C20*(BI1-THREE)**2)+C11*
$ (BI1-THREE)*(BI2-THREE)+(C30*(BI1-THREE)**3)+(((AJ-ONE)**2)/D1)
UI1(1)=C10+C11*(BI2-THREE)+C20*(TWO*BI1-SIX)+
$ THREE*C30*(BI1-THREE)**2
UI1(2)=C01+C11*(BI1-THREE)
UI1(3)=(TWO*AJ-TWO)/D1
UI2(1)=TWO*C20+THREE*C30*(TWO*BI1-SIX)
UI2(2)= ZERO
UI2(3)=TWO/D1
UI2(4)=C11
UI2(5)=ZERO
UI2(6)=ZERO
UI3(1)=ZERO
UI3(2)=ZERO
UI3(3)=ZERO
UI3(4)=ZERO
UI3(5)=ZERO
UI3(6)=ZERO
ELSE IF (CMNAME(1:10) .EQ. 'GHI') THEN
C10 = 0.00714
C01 = 0.00063
C11 = 0.09579
C20 = 0.00803
C30 = 0.09931
D1=0.00000077
U=C10*(BI1-THREE)+C01*(BI2-THREE)+(C20*(BI1-THREE)**2)+C11*
$ (BI1-THREE)*(BI2-THREE)+(C30*(BI1-THREE)**3)+(((AJ-ONE)**2)/D1)
UI1(1)=C10+C11*(BI2-THREE)+C20*(TWO*BI1-SIX)+
$ THREE*C30*(BI1-THREE)**2
UI1(2)=C01+C11*(BI1-THREE)
UI1(3)=(TWO*AJ-TWO)/D1
UI2(1)=TWO*C20+THREE*C30*(TWO*BI1-SIX)
UI2(2)= ZERO
UI2(3)=TWO/D1
UI2(4)=C11
UI2(5)=ZERO
UI2(6)=ZERO
UI3(1)=ZERO
UI3(2)=ZERO
UI3(3)=ZERO
UI3(4)=ZERO
UI3(5)=ZERO
UI3(6)=ZERO
ELSE IF (CMNAME(1:7) .EQ. 'JKL') THEN
C10=0.00753
C01=0.00999
C20=0.02063
C11=0.00039
C30=0.00078
D1=0.000001752
U =C10*(BI1-THREE)+C01*(BI2-THREE)+C20*(BI1-THREE)**2+C11*
$ (BI1-THREE)*(BI2-THREE)+C30*(BI2-THREE)**2+(((AJ-ONE)**2)/D1)
UI1(1)=C10+C11*(BI2-THREE)+C20*(2*BI1-SIX)
UI1(2)=C01+C11*(BI1-THREE)+C30*(TWO*BI2-SIX)
UI1(3)=(TWO*AJ-TWO)/D1
UI2(1)=TWO*C20
UI2(2)= TWO*C30
UI2(3)=TWO/D1
UI2(4)=C11
UI2(5)=ZERO
UI2(6)=ZERO
UI3(1)=ZERO
UI3(2)=ZERO
UI3(3)=ZERO
UI3(4)=ZERO
UI3(5)=ZERO
UI3(6)=ZERO
ELSE IF (CMNAME(1:5) .EQ. 'MNO') THEN
C10=0.00116
C01=0.01168
C20=0.00858
C11=0.0006
C30=0.00022
D1=0.000001284
U =C10*(BI1-THREE)+C01*(BI2-THREE)+C20*(BI1-THREE)**2+C11*
$ (BI1-THREE)*(BI2-THREE)+C30*(BI2-THREE)**2+(((AJ-ONE)**2)/D1)
UI1(1)=C10+C11*(BI2-THREE)+C20*(2*BI1-SIX)
UI1(2)=C01+C11*(BI1-THREE)+C30*(TWO*BI2-SIX)
UI1(3)=(TWO*AJ-TWO)/D1
UI2(1)=TWO*C20
UI2(2)= TWO*C30
UI2(3)=TWO/D1
UI2(4)=C11
UI2(5)=ZERO
UI2(6)=ZERO
UI3(1)=ZERO
UI3(2)=ZERO
UI3(3)=ZERO
UI3(4)=ZERO
UI3(5)=ZERO
UI3(6)=ZERO
ELSE
C10=0.001144
C01=0.01357
C20=0.06238
C11=0.02626
C30=0.00761
D1=0.0000014714
U =C10*(BI1-THREE)+C01*(BI2-THREE)+C20*(BI1-THREE)**2+C11*
$ (BI1-THREE)*(BI2-THREE)+C30*(BI2-THREE)**2+(((AJ-ONE)**2)/D1)
UI1(1)=C10+C11*(BI2-THREE)+C20*(2*BI1-SIX)
UI1(2)=C01+C11*(BI1-THREE)+C30*(TWO*BI2-SIX)
UI1(3)=(TWO*AJ-TWO)/D1
UI2(1)=TWO*C20
UI2(2)= TWO*C30
UI2(3)=TWO/D1
UI2(4)=C11
UI2(5)=ZERO
UI2(6)=ZERO
UI3(1)=ZERO
UI3(2)=ZERO
UI3(3)=ZERO
UI3(4)=ZERO
UI3(5)=ZERO
UI3(6)=ZERO
C123456
END IF
RETURN
END
Header
To me, it looks like there is a problem in the line starting with Dimension of your header. According to the documentation I have (have never actually employed UHYPER subroutine before), you need it to be DIMENSION U(2),UI1(3)... and the above is missing U(2). I don't think this would introduce such a critical error, but it's probably better to follow the documentation on the header bit. If you are still having troubles compiling, perhaps check your .env file. That seems to be the source of a lot of trouble. It has the commands to do the compiling. Especially if you've verified that this subroutine worked for another person on a separate computer, this could be the source of your issue.
SUBROUTINE UHYPER(BI1,BI2,AJ,U,UI1,UI2,UI3,TEMP,NOEL,CMNAME,
$ INCMPFLAG,NUMSTATEV,STATEV,NUMFIELDV,
$ FIELDV,FIELDVINC,NUMPROPS,PROPS)
C
INCLUDE 'ABA_PARAM.INC'
C
CHARACTER*80 CMNAME
DIMENSION U(2),UI1(3),UI2(6),UI3(6),STATEV(*),FIELDV(*),
$ FIELDVINC(*),PROPS(*)
C
PARAMETER (ZERO=0.0D0,ONE=1.0D0, TWO=2.0D0, THREE=3.0D0,SIX=6.0D0)
C
thanks for the reply..but did
thanks for the reply..but did as you suggested i.e included U(2) nothing changed, error still the same.
You said check .env file - and look for what specifically
here is my .env file (Would somebody please tell me how to check this code somewhere else to see if it works like in VS or Intel Compiler)
#
# System-Wide Abaqus Environment File
# -------------------------------------
standard_parallel = ALL
mp_mode = MPI
mp_file_system = (DETECT,DETECT)
mp_num_parallel_ftps = (4, 4)
mp_environment_export = ('MPI_PROPAGATE_TSTP',
'ABA_CM_BUFFERING',
'ABA_CM_BUFFERING_LIMIT',
'ABA_ITERATIVE_SOLVER_VERBOSE',
'ABA_DMPSOLVER_BWDPARALLELOFF',
'ABA_ELP_SURFACE_SPLIT',
'ABA_ELP_SUSPEND',
'ABA_HOME',
'ABA_MEMORY_MODE',
'ABA_MPI_MESSAGE_TRACKING',
'ABA_MPI_VERBOSE_LEVEL',
'ABA_PATH',
'ABAQUS_CSE_RELTIMETOLERANCE',
'ABA_RESOURCE_MONITOR',
'ABA_RESOURCE_USEMALLINFO',
'ABAQUS_LANG',
'ABAQUS_CSE_CURRCONFIGMAPPING',
'ABAQUS_MPF_DIAGNOSTIC_LEVEL',
'ABAQUSLM_LICENSE_FILE',
'ABQ_CRTMALLOC',
'ABQ_DATACHECK',
'ABQ_RECOVER',
'ABQ_RESTART',
'ABQ_SPLITFILE',
'ABQ_XPL_WINDOWDUMP',
'ABQ_XPL_PARTITIONSIZE',
'ABQLMHANGLIMIT',
'ABQLMQUEUE',
'ABQLMUSER',
'CCI_RENDEZVOUS',
'DOMAIN',
'DOMAIN_CPUS',
'DOUBLE_PRECISION',
'FLEXLM_DIAGNOSTICS',
'FOR0006',
'FOR0064',
'FOR_IGNORE_EXCEPTIONS',
'FOR_DISABLE_DIAGNOSTIC_DISPLAY',
'LD_PRELOAD',
'MP_NUMBER_OF_THREADS',
'MPC_GANG',
'MPI_FLAGS',
'MPI_FLUSH_FCACHE',
'MPI_RDMA_NENVELOPE',
'MPI_SOCKBUFSIZE',
'MPI_USE_MALLOPT_MMAP_MAX',
'MPI_USE_MALLOPT_MMAP_THRESHOLD',
'MPI_USE_MALLOPT_SBRK_PROTECTION',
'MPI_WORKDIR',
'MPCCI_DEBUG',
'MPCCI_CODEID',
'MPCCI_JOBID',
'MPCCI_NETDEVICE',
'MPCCI_TINFO',
'MPCCI_SERVER',
'ABAQUS_CCI_DEBUG',
'NCPUS',
'OMP_DYNAMIC',
'OMP_NUM_THREADS',
'OUTDIR',
'PAIDUP',
'PARALLEL_METHOD',
'RAIDEV_NDREG_LAZYMEM',
'ABA_SYMBOLIC_GENERALCOLLAPSE',
'ABA_SYMBOLIC_GENERAL_MAXCLIQUERANK',
'ABA_ADM_MINIMUMINCREASE',
'ABA_ADM_MINIMUMDECREASE',
'IPATH_NO_CPUAFFINITY',
'MALLOC_MMAP_THRESHOLD_',
'ABA_EXT_SIMOUTPUT',
'SMA_WS',
'SMA_PARENT',
'SMA_PLATFORM',
'ABA_PRE_DECOMPOSITION',
'ACML_FAST_MALLOC',
'ACML_FAST_MALLOC_CHUNK_SIZE',
'ACML_FAST_MALLOC_MAX_CHUNKS',
'ACML_FAST_MALLOC_DEBUG')
import driverUtils, os
#-*- mode: python -*-
# #
# Compile and Link command settings for the Windows 64 Platform #
# ( AMD Opteron / Intel EM64T ) #
# #
compile_cpp=['cl', '/c', '/W0', '/MD', '/TP',
'/EHsc', '/DNDEBUG', '/DWIN32', '/DTP_IP', '/D_CONSOLE',
'/DNTI', '/DFLT_LIC', '/DOL_DOC', '/D__LIB__', '/DHKS_NT',
'/DABQ_NTI_NET', '/DFAR=', '/D_WINDOWS', '/DABQ_WIN86_64',
# '/O1', # <-- Optimization
# '/Zi', # <-- Debug symbols
'/I%I']
compile_fortran=['ifort',
'/c','/DABQ_WIN86_64', '/extend-source',
'/iface:cref', '/recursive', '/Qauto-scalar',
'/QxSSE3', '/QaxAVX',
'/heap-arrays:1',
# '/Od', '/Ob0' # <-- Optimization
# '/Zi', # <-- Debugging
'/include:%I']
link_sl=['LINK',
'/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64',
'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB',
'/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB', '/DEFAULTLIB:LIBIFPORTMD', '/DEFAULTLIB:LIBMMD.LIB',
'/DEFAULTLIB:kernel32.lib', '/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
'/FIXED:NO', '/dll',
'/def:%E', '/out:%U', '%F', '%A', '%L', '%B',
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib', 'advapi32.lib']
link_exe=['LINK',
'/nologo', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', '/STACK:20000000',
'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB', '/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:LIBIFCOREMD.LIB',
'/DEFAULTLIB:LIBIFPORTMD', '/DEFAULTLIB:LIBMMD.LIB', '/DEFAULTLIB:kernel32.lib',
'/DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
'/FIXED:NO', '/LARGEADDRESSAWARE',
'/out:%J', '%F', '%M', '%L', '%B', '%O',
'oldnames.lib', 'user32.lib', 'ws2_32.lib', 'netapi32.lib', 'advapi32.lib']
# Link command to be used for MAKE w/o fortran compiler.
# remove the pound signs in order to remove the comments and have the file take effect.
#
#link_exe=['LINK', '/nologo', 'INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64', '/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB',
# '/DEFAULTLIB:OLDNAMES.LIB', '/DEFAULTLIB:MSVCRT.LIB', '/DEFAULTLIB:kernel32.lib', 'DEFAULTLIB:user32.lib', '/DEFAULTLIB:advapi32.lib',
# '/FIXED:NO', '/LARGEADDRESSAWARE', '/DEBUG', '/out:%J', '%F', '%M', '%L', '%B', '%O', 'oldnames.lib', 'user32.lib', 'ws2_32.lib',
# 'netapi32.lib', 'advapi32.lib]
# MPI Configuration
mp_mode = THREADS
mp_mpi_implementation = NATIVE
mp_rsh_command = 'dummy %H -l %U -n %C'
mp_mpirun_path = {}
mpirun = ''
progDir = os.environ.get('ProgramFiles','C:\\Program Files')
for mpiDir in ('Microsoft HPC Pack', 'Microsoft HPC Pack 2008 R2', 'Microsoft HPC Pack 2008', 'Microsoft HPC Pack 2008 SDK'):
mpirun = progDir + os.sep + mpiDir + os.sep + 'bin' + os.sep + 'mpiexec.exe'
if os.path.exists(mpirun):
mp_mpirun_path[NATIVE] = mpirun
mp_mpirun_path[MSSDK] = os.path.join(progDir, mpiDir)
break
if os.environ.has_key('CCP_HOME'):
from queueCCS import QueueCCS
queues['default'] = QueueCCS(queueName='share')
queues['share'] = QueueCCS(queueName='share')
queues['local'] = QueueCCS(queueName='local')
queues['genxmlshare'] = QueueCCS(queueName='genxmlshare')
queues['genxmllocal'] = QueueCCS(queueName='genxmllocal')
del QueueCCS
mpirun = os.path.join(os.environ['CCP_HOME'], 'bin', 'mpiexec.exe')
if os.path.exists(mpirun):
mp_mpirun_path[NATIVE] = mpirun
run_mode=BATCH
if mp_mpirun_path:
mp_mode=MPI
del progDir, mpiDir, mpirun
graphicsEnv = driverUtils.locateFile(os.environ['ABA_PATH'],'site','graphicsConfig','env')
if graphicsEnv:
execfile(graphicsEnv)
else:
raise 'Cannot find the graphics configuration environment file (graphicsConfig.env)'
del driverUtils, os, graphicsEnv
license_server_type=FLEXNET
abaquslm_license_file="27003@cronus.hipecc.wichita.edu"
doc_root="http://EB-203A-E2:2080/v6.13"
doc_root_type="html"
Do you have any further
Do you have any further details or output regarding your compilation error? That could help in regards to figuring the specific issue.
uhyper subroutine example for Abaqus
take a look at the link
https://en.banumusagr.com/shop/uhyper-subroutine-modelling-porous-elasto...