On DLOAD and user subroutines

View: New views
3 Messages — Rating Filter:   Alert me  

On DLOAD and user subroutines

by aruk77500 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Dear all,

I need to creat a distributed load which is a function of time and current position through analysis. Sure, I can use subroutine DLOAD, but I dont yet have enough knowledge.

Going throuh the documentation, I have found the following DLOAD subroutine;

      SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
     1                 JLTYP,SNAME)
C
C     EXPONENTIAL PRESSURE LOAD
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION COORDS(3),TIME(2)
      CHARACTER*80 SNAME
      DATA TEN,ONE,CONST /10.,1.,-230.3/
      F=TEN*(ONE-(EXP(CONST*TIME(1))))
      IF(NPT.EQ.1) WRITE(6,*) ' LOAD APPLIED',F,'AT TIME=',TIME(1)
      RETURN
      END

which creats an exponentially time-varying pressure load.

My questions are a lot, though the example above seems quite clear :)

1) DIMENSION COORDS(3), TIME (2)
 Does this mean the dimension of coordinates is three ( x,y,z, right?) and the dimension of time is 2? ( if two, what is the second?)

2) What does "CHARACTER*80 SNAME" stand for?

2)      IF(NPT.EQ.1) WRITE(6,*) ' LOAD APPLIED',F,'AT TIME=',TIME(1)
      RETURN
what is this if statement used for?

And also, I wonder the required level of knowledge of fortran to be able to write user subroutines, and if possible, the required literature to reach to this level of perfection.

Regards and thank you a lot.

faith


     

Re: On DLOAD and user subroutines

by jeffergj :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

fortran is quite simple. Id recommend picking up a f77 textbook and going
through a few examples
outside of abaqus first however because debugging is relatively difficult
within abaqus.

Beyond that it really is essential to read the manual entry for the user
routine, that will tell you
the meaning of time(2).



On Tue, Nov 3, 2009 at 9:33 AM, fatih aruk <aruk77500@...> wrote:

>
>
> Dear all,
>
> I need to creat a distributed load which is a function of time and current
> position through analysis. Sure, I can use subroutine DLOAD, but I dont yet
> have enough knowledge.
>
> Going throuh the documentation, I have found the following DLOAD
> subroutine;
>
> SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
> 1 JLTYP,SNAME)
> C
> C EXPONENTIAL PRESSURE LOAD
> C
> INCLUDE 'ABA_PARAM.INC'
> C
> DIMENSION COORDS(3),TIME(2)
> CHARACTER*80 SNAME
> DATA TEN,ONE,CONST /10.,1.,-230.3/
> F=TEN*(ONE-(EXP(CONST*TIME(1))))
> IF(NPT.EQ.1) WRITE(6,*) ' LOAD APPLIED',F,'AT TIME=',TIME(1)
> RETURN
> END
>
> which creats an exponentially time-varying pressure load.
>
> My questions are a lot, though the example above seems quite clear :)
>
> 1) DIMENSION COORDS(3), TIME (2)
> Does this mean the dimension of coordinates is three ( x,y,z, right?) and
> the dimension of time is 2? ( if two, what is the second?)
>
> 2) What does "CHARACTER*80 SNAME" stand for?
>
> 2) IF(NPT.EQ.1) WRITE(6,*) ' LOAD APPLIED',F,'AT TIME=',TIME(1)
> RETURN
> what is this if statement used for?
>
> And also, I wonder the required level of knowledge of fortran to be able to
> write user subroutines, and if possible, the required literature to reach to
> this level of perfection.
>
> Regards and thank you a lot.
>
> faith
>
>  
>


[Non-text portions of this message have been removed]


Re: On DLOAD and user subroutines

by Dave Lindeman :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

1) Yes, [x,y,z] = COORDS[1,2,3].  Step time vs. total time.
2) SNAME is an 80 character long string variable containing the name of
the surface on which the load was applied (if applicable)
3) The IF statement is simply restricting the output of the WRITE
statement so that it occurs only when the first load integration point
of an element is being processed.

Regards,

Dave

-------------------------
Dave Lindeman
Lead Research Specialist
3M Company
3M Center 235-3F-08
St. Paul, MN 55144
651-733-6383


fatih aruk wrote:

>  
>
> Dear all,
>
> I need to creat a distributed load which is a function of time and
> current position through analysis. Sure, I can use subroutine DLOAD, but
> I dont yet have enough knowledge.
>
> Going throuh the documentation, I have found the following DLOAD subroutine;
>
> SUBROUTINE DLOAD(F,KSTEP,KINC,TIME,NOEL,NPT,LAYER,KSPT,COORDS,
> 1 JLTYP,SNAME)
> C
> C EXPONENTIAL PRESSURE LOAD
> C
> INCLUDE 'ABA_PARAM.INC'
> C
> DIMENSION COORDS(3),TIME(2)
> CHARACTER*80 SNAME
> DATA TEN,ONE,CONST /10.,1.,-230.3/
> F=TEN*(ONE-(EXP(CONST*TIME(1))))
> IF(NPT.EQ.1) WRITE(6,*) ' LOAD APPLIED',F,'AT TIME=',TIME(1)
> RETURN
> END
>
> which creats an exponentially time-varying pressure load.
>
> My questions are a lot, though the example above seems quite clear :)
>
> 1) DIMENSION COORDS(3), TIME (2)
> Does this mean the dimension of coordinates is three ( x,y,z, right?)
> and the dimension of time is 2? ( if two, what is the second?)
>
> 2) What does "CHARACTER*80 SNAME" stand for?
>
> 2) IF(NPT.EQ.1) WRITE(6,*) ' LOAD APPLIED',F,'AT TIME=',TIME(1)
> RETURN
> what is this if statement used for?
>
> And also, I wonder the required level of knowledge of fortran to be able
> to write user subroutines, and if possible, the required literature to
> reach to this level of perfection.
>
> Regards and thank you a lot.
>
> faith
>
>