## You are here

# Comments

### Bone Remodeling

*In reply to Bone Remodeling Subroutine*

Hello,

yes, you need UMAT.

For a start in UMAT coding get the file

http://imechanica.org/files/Writing User Subroutines with ABAQUS.pdf

it may show up as

http://imechanica.org/files/Writing%20User%20Subroutines%20with%20ABAQUS...

But it will not be of much help to you.

For remodeling see

http://imechanica.org/node/13153

Bone remodeling codes

Search the web for a code for the model you intend to use. Alternatively, ask the authors of that model if they are willing to share a code, not necessarily for ABAQUS. Your work should help them spread the word, so they should have a keen interest in disseminating a numerics code.

If you refer with "smart materials" to shape memory materials then look up my posting on

http://imechanica.org/node/7001

Regrettably, that custhelp site of Simulia is down. Contact me directly if you need the information I refer to in this posting.

The other option is UMAT coding of shape memory materials.

Good luck

Frank

### Reply to Stefan (re. function expansion, completeness)

*In reply to Expansion of a function into a basis set*

Hi Stefan,

Thanks for your helpful reply again, but since I got caught in a couple of job interviews, I was travelling, and so could not come back to you immediately. In fact, as the latest post at my personal blog I rapidly wrote indicates, that's how it's been going, and it will continue to go that way for some time, say until mid-July. So, please excuse me if I am not always timely in replying (esp. if it involves reading a book or thinking a lot before replying).

In the meanwhile, let me note just one point rapidly, even if I am not familiar with the Hilbert-Schmidt theory. If it's a theory that crucially depends on the *self-adjoint* operators, then, no, I don't think we are considering the problem of function expansion in full generality. That's my gut feel, but let me think about it more, and come back to you at a later date (perhaps much later).

In the meanwhile, thanks in advance for bearing with me, and best regards,

--Ajit

[E&OE]

### Thanks a lot, I was wondering

*In reply to Writing User Subroutines with ABAQUS*

Thanks a lot, I was wondering if you give me more information about linking abaqus 6-13-1 and Fortran 90 in Windows 8. I have big problem with this. My abaqus shows the error "user subroutine only in .for or .obj format", I wrote subroutine in .f90 format and cannot compilie

### I am really exausted by this

*In reply to re: running free format fortran*

I am really exausted by this error "User subroutine file name must have a .for or .obj extension" in my Abaqus (6-13-1)

while I want to linking it with FORTRAN 90. I made also changes in my abaqus environment file (.env), specifically I added the '/free' to the compile_fortran line but I have still this problem. I was wondering if you give me more information. To more, I copy my both compile_fortran and link_sl from abaqus_v6.env. thanks in advance

# Add the flag '-free' to the compile_fortran command below to use free-

# format FORTRAN 90 syntax.

compile_fortran=['ifort',

'/c','/DABQ_WIN86_64', '/extend-source',

'/iface:cref', '/recursive','/QMKl:sequential', '/free', '/Qauto-scalar','QxW'

'/QxSSE3', '/QaxAVX', '/f90-c-free','F90COM','/c:\MSDEV\BIN','/GM'

'/heap-arrays:1', 'fortCmd'+'f90-c-free-extend_source-xK-axW-w90-w95-WB-I%I',

# '/Od', '/Ob0' # <-- Optimization

# '/Zi', # <-- Debugging

'/include:%I', '/free']

link_sl=['LINK',

'/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64',

'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB', '/f90',

'/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']

### Finally I did it with Abaqus

*In reply to Linking Abaqus 6.14-1 with Microsoft Visual Studio 12.0 (2013) and Composer XE 2013 SP1 (Update 1) *

Finally I did it with Abaqus 6.10 and fprgot about the Abaqus 6.14!

### Explanation

*In reply to defining residual stresses, ABAQUS subroutines SIGINI/HARDINI*

Can you please explain me how to run and use SIGINI subroutine

### Dear Ajit,

*In reply to Expansion of a function into a basis set*

The completeness proofs I know of are based either on the Weierstrass theorem (polynomials are dense with respect to the uniform convergence in the space of continuous functions defined over a compact interval), or on the Hilbert-Schmidt theory of self-adjoint operators. The first approach is natural for polynomials and related functions (trigonometric polynomials, spherical harmonics), while the latter is most often associated with "special" functions. That is, most often the basis functions are "special", meaning that they are eigenvalues of a certain differential operator (solutions of a differential equation). And just as in the finite-dimensional case (where each symmetric operator can be diagonalized, the set of its eigenvectors being a basis for the whole space), the set of eigenfunctions of a self-adjoint operator (this time operating on a Hilbert space of functions) is also a basis (modulo some technical details, this is the essence of the Hilbert-Schmidt theorem). Many special functions have their origins in the search for the solutions of certain partial differential equations and thus material on this topic can be found in appropriate textbooks. A very readable one is, for example:

Guenther and Lee: Partial differential equations of mathematical

physics and integral equations.

Best,

Stefan

### nice work!

### Thanks Kewei,

*In reply to The required Fortran compiler*

Thanks Kewei,

I got the idea that intel fortran version 2013 (fortran compiler version 13) might work with from the first link I have mentioned.

I will try this version, but I couldn't find any links from Intel to download this version!

Kind regards,

Omid

### How did you define contact between beam and shell

*In reply to defining residual stresses, ABAQUS subroutines SIGINI/HARDINI*

How did you define contact between beam and shell, Did you use coupling

### compiling problem

*In reply to Righto*

Hi Arun

I am really exausted by this error "User subroutine file name must have a .for or .obj extension" in my Abaqus (6-13-1)

while I want to linking it with FORTRAN 90. I made also changes in my abaqus environment file (.env), specifically I added the '/free' to the compile_fortran line but I have still this problem. I was wondering if you give me more information. To more, I copy my both compile_fortran and link_sl from abaqus_v6.env. thanks in advance

# Add the flag '-free' to the compile_fortran command below to use free-

# format FORTRAN 90 syntax.

compile_fortran=['ifort',

'/c','/DABQ_WIN86_64', '/extend-source',

'/iface:cref', '/recursive','/QMKl:sequential', '/free', '/Qauto-scalar','QxW'

'/QxSSE3', '/QaxAVX', '/f90-c-free','F90COM','/c:\MSDEV\BIN','/GM'

'/heap-arrays:1', 'fortCmd'+'f90-c-free-extend_source-xK-axW-w90-w95-WB-I%I',

# '/Od', '/Ob0' # <-- Optimization

# '/Zi', # <-- Debugging

'/include:%I', '/free']

link_sl=['LINK',

'/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64',

'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB', '/f90',

'/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']

### compiling problem

*In reply to Writing ABAQUS UEL subroutines in Fortran 90 or higher versions .*

Hello everybody

I am really exausted by this error "User subroutine file name must have a .for or .obj extension" in my Abaqus (6-13-1)

while I want to linking it with FORTRAN 90. I made also changes in my abaqus environment file (.env), specifically I added the '/free' to the compile_fortran line but I have still this problem. I was wondering if one of you give me more information. To more, I copy my both compile_fortran and link_sl from abaqus_v6.env. thanks in advance

# Add the flag '-free' to the compile_fortran command below to use free-

# format FORTRAN 90 syntax.

compile_fortran=['ifort',

'/c','/DABQ_WIN86_64', '/extend-source',

'/iface:cref', '/recursive','/QMKl:sequential', '/free', '/Qauto-scalar','QxW'

'/QxSSE3', '/QaxAVX', '/f90-c-free','F90COM','/c:\MSDEV\BIN','/GM'

'/heap-arrays:1', 'fortCmd'+'f90-c-free-extend_source-xK-axW-w90-w95-WB-I%I',

# '/Od', '/Ob0' # <-- Optimization

# '/Zi', # <-- Debugging

'/include:%I', '/free']

link_sl=['LINK',

'/nologo', '/NOENTRY', '/INCREMENTAL:NO', '/subsystem:console', '/machine:AMD64',

'/NODEFAULTLIB:LIBC.LIB', '/NODEFAULTLIB:LIBCMT.LIB', '/f90',

'/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']

### Reply to Stefan (re. expansion of a function)

*In reply to Expansion of a function into a basis set*

Dear Stefan,

Thanks for your nice (and easy to read) and *very* informative reply. Here are my comments, in no particular order. Feel free to correct me and/or add to my knowledge:

1. About the Bessel functions and the spherical harmonics, yes, I should have thought of them.

Can these be seen as formed by combining the polynomial and the complex-exponential forms? I think so. Please correct me if there is an important consideration that I miss.

2. About the ideas such as the window functions, short-time Fourier transforms, the Welch funcions, wavelets, etc.

This class of methods had simply escaped me!!

....Well, that way, I am a bit familiar with these ideas. I had implemented a short-time transform for my software product ToneBrush (the product had provided visualization of music). Even then, this idea had completely escaped me in this context. So, thanks for including it in your list.

There also is another line of questioning that I am currently pursuing, concerning the extent of the support of a solution, particularly for the diffusion equation. This line of thought includes various threads such as the bump function, analyticity, and expansion of support at the beginning of the solution procedure; the sub-domain collocation (in approximate analysis); etc. Now, windowing is an absolutely, superbly and wonderfully relevant concept here, and though I had mentioned wavelets just in the passing in my earlier paper on diffusion, I had somehow forgotten about it by now. Thanks for highlighting its relevance again. (Of course, for that matter, I need to learn wavelets and windowing better anyway!)

(That's another reason why discussions like these have a very definite value. It might have taken me a long time of months, even years, to look at the windowing idea from this viewpoint, simply because it had fallen off my radar over the past 5-odd years.)

3. Another interesting point you mention is showing ``that such a system of functions is dense within the whole space.'' I would like to pursue the tools and the techniques they use, to show such things. If you can think of any simplified notes on the topic or so, please drop a line.

4. However, let's now note a bit about the nature of the statement you make: Starting with some specific functions defined some particular way, if they are found to form a dense system, then one can extract a basis for expanding any arbitrary function defined in that space. So, the flow is: from specific functions to obtaining a basis set for expansion in that space. However, I also had another concern. Apart from listing two main categories of such functions (a list which needs to be expanded now), it was also about completeness; see the next point.

5. The 4 combinations of reals and imaginaries (and thanks to Stefan's reply, also, the higher-level functions/series obtained after combining them) seems to exhaust *all* the possibilities of constructing such functions that they can at all yield a basis set. The higher-level or more abstract products such as the Bessel functions are included in the combinations, and so are those obtained using the windowing idea.

So, all such categories of functions seem to come from only those 4 combinations of {base}^{exponent} where each of {base} and {exponent} is either a real or an imaginary. This fact seems crucially to rely on Gauss' theorem concerning algebraic closure. The question is: do these 4 combinations really exhaust the ingradients of building *any* such functions? Are the 4 combinations, *all* there is to it? ... If Guass' theorem is *crucially* relevant here, then the completeness is proved. If it is relevant, but *not* crucially relevant, then not. So, which way does it go? ... I have no real idea, even though I think the answer is yes.

7. Just one more point before we close. Granted the general theory, there still seems to be something to this distinction of polynomials vs. complex-exponentials. For instance, given an initial concentration profile in the form of a bump function, if you try its transient diffusion, the polynomials approach would fail, and the Fourier analysis would end up giving you infinite speed of signal propagation. However, for a stress analysis problem, say linear strain triangle, using (co)sinusoidals seems not so well-suited an idea. ... Anyway, we can keep this point aside for the moment; it's not important; the provability of the completeness of the 4 combinations is.

8. To all: I do want to make a separate note of how exceptionally helpful/fruitful/productive Stefan's reply here has been for me.

[... OK, in the meanwhile, allow me to pursue the references given, from the viewpoints of current interest.]

--Ajit

[E&OE]

### The required Fortran compiler

*In reply to Linking Abaqus 6.14-1 with Microsoft Visual Studio 12.0 (2013) and Composer XE 2013 SP1 (Update 1) *

The required Fortran compiler for Abaqus 6.14 is Intel Fortran Composer XE 2011 SP1. Most likely you don't need Microsoft Visual Studio .

### Dear Ajit,

*In reply to Expansion of a function into a basis set*

If I understand correctly, your problem is about the expansion of a given function on a set of other "elementary" functions. If so, then there is a well established mathematical framework for this: Fourier series (or orthogonal expansions)in Hilbert spaces. These spaces are vector spaces endowed with a scalar product. They are similar to the familiar Euclidean space, but it was Hilbert who discovered that the same geometry remains valid in the infinite dimensional case. Then the concept of basis remains the same, if one replaces a finite sum with the sum of a series. The basis functions need not be the sin and cosine functions, although these were at the origin of the concept (the history of the subject is fascinating: Euler, D'Alembert, Bernoulli and Lagrange were already discussing "Fourier" series in connection with the solution of the problem of the vibrating string). Depending on the nature of the problem, one may have polynomials (

Legendre, Chebyshev, Hermite, Laguerre), Bessel functions, spherical harmonics, step (or Walsh) functions, wavelets, etc: once you show that such a system of functions is dense within the whole space, then you can extract a basis, orthogonalize it and then nicely represent any element/function of that space via the Fourier formula for the expansion coefficients. The subject is vast with numerous applications: in the solution of boundary value problems, signal processing, computer graphics, interpolation, etc. Useful references:

Courant and Hilbert: Methods of mathematical physics, vol I.

Sagan: Boundary and eigenvalue problems in mathematical physics.

Hochstadt: The functions of mathematical physics.

Strang: Introduction to applied mathematics.

Best

Stefan

### Re: Expansion of a function

*In reply to Expansion of a function into a basis set*

**0.** Allow me to note a clarification (i.e. a note on how stupid I can so easily get).The clarification is about **Q1**.

**1.** Just note the Taylor series expansion of $e^x$. It is $\sum \dfrac{x^n}{n!}$. Ergo, $\sum a_n e^{nx}$ would be already covered by the **(A)** category i.e. $\sum a_n x^n$. Thus, **Q1** is redundant. [Famous Last Words: I should have known...]

**2.** How could I make such a stupid mistake? Here is the excuse...

Actually, while writing the post, I was simultaneously thinking of something else other than what all I have explicitly noted above, too.

**3.** The core issue here is the polynomial expansion $\sum a_n x^n$ vs. the Fourier expansion $\sum a_n e^{inx}$. These two make up entirely different categories.

It is well known that a function whose expansion is ``naturally'' expressed in one of them tends to be trouble-some to express in the other. For example, electrical engineers (or anyone dealing with periodic phenomena like the signal-processing folks) are often advised not to try a polynomial expansion, whereas mechanical/civil/aero engineers doing static analyses (but not vibration problems) typically pick up only polynomial expansions (which is the reason why spectral methods in the usual CFD/FEM arrived on the scene so late).

So, I thought up this issue of the mathematical completeness or otherwise of these two categories (as far as serving as the means of expanding an arbitrary but neat function goes).

**4.** I then wanted to make sure I was covering all possible combinations of the reals and the imaginaries, in both bases and exponents.

In particular, (only) at the back of my mind, I was considering the possibility of $x^{i}$, which isn't explicitly mentioned in the post above. Yet, while writing my post on the fly, one part of my mind remained engaged in ``figuring'' out whether it would be covered by $e^{inx}$ or not. I ``felt'' it was covered, and so, proceeded writing further anyway. (I had not worked out anything in detail on paper.)

My ``feeling'' turns out to be right. But this diversion of the attention meant that I ended up introducing this silly mistake of thinking up **Q1**. Its redundancy I realized only after publishing the post.

**5.** Incidentally, if it isn't already clear why $x^i$ gets covered by $e^{ixn}$, see this Math[sic] StackExchange thread here [^].

...

**6.** Ok. So, let's get back on the track. Now, only **Q2** survives. What do you think of it?

Sorry for this mess, and best,

--Ajit

[E&OE]

### Do you know how to model fork support?

### Abaqus uel xfem code

*In reply to Questions about crack growth code using extended finite method uel (Abaqus uel xfem code)*

Dear Honggang Jia

I am working on a problem on fracture in composite and trying to implement ABAQUS 3D XFEM UEL code along with my subroutine.I tried to download the UEL_XFEM from the link mentioned but got some error messgae for the pasword.Can you send me the code at my email id pateldkp@uw.edu ?

### Hi

*In reply to Link Ansys with Matlab*

Hi

Is your Ansys cracked? It's mybe happend in cracked version.

better use another version of Ansys.

### I tried both adding a

*In reply to Create simple ODB without submitting a job*

I tried both adding a SolidHomogeneousSection and manually setting the viewport and still get a crash. The new script looks like this. If others run this do they get a crash as well?

from abaqusConstants import *

from odbAccess import *

from textRepr import *

odb = Odb(name='4',

analysisTitle='derived data',

description='test problem',

path='4.odb')

sCat = odb.SectionCategory(name='solid', description='Five-Layered Shell')

part1 = odb.Part(name='part-1',embeddedSpace=THREE_D, type=DEFORMABLE_BODY)

nodeData = [(1, -5.0, -5.0, 10.0), (2, -5.0, 5.0, 10.0), (3, -5.0, -5.0, 0.0), (4, -5.0, 5.0, 0.0), (5, 5.0, -5.0, 10.0), (6, 5.0, 5.0, 10.0), (7, 5.0, -5.0, 0.0), (8, 5.0, 5.0, 0.0)]

part1.addNodes(nodeData=nodeData, nodeSetName='nset-1')

elementData = [(1, 4, 5, 7, 6, 0, 1, 3, 2)]

part1.addElements(elementData=elementData, type='C3D8',

elementSetName='eset-1', sectionCategory=sCat)

assembly = odb.rootAssembly

instance1 = assembly.Instance(name='part-1-1', object=part1)

# An element set on an instance

eLabels = [1]

elementSet = instance1.ElementSetFromElementLabels(

name='elsetA',elementLabels=eLabels)

# A node set on the rootAssembly

instance1.NodeSetFromNodeLabels('nset', (1,2,3,4,5,6,7,8))

step1 = odb.Step(name='step-1', description='', domain=TIME, timePeriod=0)

frame1 = step1.Frame(incrementNumber=1, frameValue=0, description='')

fieldout = frame1.FieldOutput(name="FO", description="Fiber Orientation Data", type=TENSOR_3D_FULL, isEngineeringTensor=TRUE, validInvariants=[MAX_PRINCIPAL,])

elist = [1]

strs = [[0.72539, 0.19255, 0.082066, -0.12808, -0.1158, 0.042058]]

fieldout.addData(position=CENTROID, instance=instance1, labels=elist, data=strs)

odb.save()

odb.close()

#=== open odb ========

o1=session.openOdb(name=%CWD%\\4.odb")

session.viewports['Viewport: 1'].setValues(displayedObject=o1)

## Recent comments