Moving laser load around the cylinder

classic Classic list List threaded Threaded
9 messages Options
Reply | Threaded
Open this post in threaded view
|

Moving laser load around the cylinder

wtwc_yksdr
Hi. I have a question. I have constructed a cylinder and I apply a load on the curvature surface. I have to simulate a situation where by the laser is heating up the cylinder while it is rotating. I manage to rotate the cylinder by constraining one of the face at a reference point.

However, the computational time is very long and I am thinking if there is other method to reduce the time taken to complete the simulation.

Is it possible to move the laser load instead of the cylinder? Will that help?

In one simulation, the cylinder remain still and the laser load is moving along the length of the cylinder and that takes a very short time. So, I am hoping this works the same if only the load is moving.

If yes, how do I do that? below is my dflux subroutine.


      SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
     1 TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME

C     A = Absorbtivity
C     P = Incident Laser Power
C     R = Laser Spot Size
C     v = Scan Speed

     
      V=0.03333
      P=250.0
      R=0.0031
      A=0.34
      PART1=2*A*P*1/(R**2)

      x = COORDS(1)
      y = COORDS(2)
      z = COORDS(3)

C     FLUX(1) = laser power intensity distribution

      FLUX(1)=PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))
      FLUX(2)=0.0

      RETURN
      END

p/s: this subroutine is for the laser moving along the length of the cylinder

Reply | Threaded
Open this post in threaded view
|

Re: Moving laser load around the cylinder

Dave Lindeman
If you're only interested in the heat transfer problem, then moving the
heat flux will allow you to eliminate the structural degrees-of-freedom,
which should result in a shorter run time.

If the axis of the cylinder is parallel to the Z-axis, then the initial
angular position A0 of a point is ATAN2(COORDS(2),COORDS(1)).  If the
cylinder is rotating at a constant speed OMEGA, then the current angular
position AC is:

AC = A0 + OMEGA*TIME(2)

If the laser is located at AL, then:

IF (ABS(AL-AC) .LE. TOLERANCE) THEN
FLUX(1) = FLUX_VALUE
ELSE
FLUX(1) = 0.0D+00
ENDIF

where TOLERANCE is some angular position tolerance, and FLUX_VALUE is
the non-zero flux you want applied.

Regards,

Dave



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

On 7/28/2010 7:41 AM, wtwc_yksdr wrote:

>
>
> Hi. I have a question. I have constructed a cylinder and I apply a load
> on the curvature surface. I have to simulate a situation where by the
> laser is heating up the cylinder while it is rotating. I manage to
> rotate the cylinder by constraining one of the face at a reference point.
>
> However, the computational time is very long and I am thinking if there
> is other method to reduce the time taken to complete the simulation.
>
> Is it possible to move the laser load instead of the cylinder? Will that
> help?
>
> In one simulation, the cylinder remain still and the laser load is
> moving along the length of the cylinder and that takes a very short
> time. So, I am hoping this works the same if only the load is moving.
>
> If yes, how do I do that? below is my dflux subroutine.
>
> SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
> 1 TEMP,PRESS,SNAME)
> C
> INCLUDE 'ABA_PARAM.INC'
> C
> DIMENSION COORDS(3),FLUX(2),TIME(2)
> CHARACTER*80 SNAME
>
> C A = Absorbtivity
> C P = Incident Laser Power
> C R = Laser Spot Size
> C v = Scan Speed
>
> V=0.03333
> P=250.0
> R=0.0031
> A=0.34
> PART1=2*A*P*1/(R**2)
>
> x = COORDS(1)
> y = COORDS(2)
> z = COORDS(3)
>
> C FLUX(1) = laser power intensity distribution
>
> FLUX(1)=PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))
> FLUX(2)=0.0
>
> RETURN
> END
>
> p/s: this subroutine is for the laser moving along the length of the
> cylinder
>
>


------------------------------------

Community email addresses:
  Post message: [hidden email]
  Subscribe:    [hidden email]
  Unsubscribe:  [hidden email]
  List owner:   [hidden email]

Shortcut URL to this page:
  http://groups.yahoo.com/group/AbaqusYahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/Abaqus/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/Abaqus/join
    (Yahoo! ID required)

<*> To change settings via email:
    [hidden email]
    [hidden email]

<*> To unsubscribe from this group, send an email to:
    [hidden email]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

Reply | Threaded
Open this post in threaded view
|

Re: Moving laser load around the cylinder

wtwc_yksdr
I still can't figure out how to make the laser beam move around the cylinder

this is my fortran code

      SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
     1 TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME

C     A = Absorbtivity
C     P = Incident Laser Power
C     R = Laser Spot Size
C     v = Scan Speed

     
      P=250.0
      R=0.0031
      A=0.34
      PART1=2*A*P*1/(R**2)

      x = COORDS(1)
      y = COORDS(2)
      z = COORDS(3)

C     A0 = initial angular position

      A0 = ATAN2(y,x)

C     OMEGA = Constant angular speed
      OMEGA = 52

      AC = A0 + OMEGA*TIME(2)

C     Tolerance = angular position tolerence
      TOLERANCE = 0

C     FLUX_VALUE = non-zero flux

      FLUX_VALUE = PART1*EXP(-2*((z-0.1)**2+x**2)/(R**2))

      FLUX(2)=0.0



      IF (ABS(AL-AC) .LE. TOLERANCE) THEN
      FLUX(1) = FLUX_VALUE
      ELSE
      FLUX(1) = 0.0D+00
      ENDIF


      RETURN
      END

Is the constant angular speed in radians/sec?

I don't understand how the if and else function work.

If i were to move the laser along the length of cylinder, i apply this:

FLUX(1) = PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))

by setting a constant velocity for example:
V = 0.3333

but for this AC, i do not know how to apply into the FLUX(1) or I don't need to do that?

How will abaqus recognise AC as a constant angular velocity?

Thanks.

--- In [hidden email], Dave Lindeman <ddlindeman@...> wrote:

>
> If you're only interested in the heat transfer problem, then moving the
> heat flux will allow you to eliminate the structural degrees-of-freedom,
> which should result in a shorter run time.
>
> If the axis of the cylinder is parallel to the Z-axis, then the initial
> angular position A0 of a point is ATAN2(COORDS(2),COORDS(1)).  If the
> cylinder is rotating at a constant speed OMEGA, then the current angular
> position AC is:
>
> AC = A0 + OMEGA*TIME(2)
>
> If the laser is located at AL, then:
>
> IF (ABS(AL-AC) .LE. TOLERANCE) THEN
> FLUX(1) = FLUX_VALUE
> ELSE
> FLUX(1) = 0.0D+00
> ENDIF
>
> where TOLERANCE is some angular position tolerance, and FLUX_VALUE is
> the non-zero flux you want applied.
>
> Regards,
>
> Dave
>
>
>
> -------------------------
> Dave Lindeman
> Lead Research Specialist
> 3M Company
> 3M Center 235-3F-08
> St. Paul, MN 55144
> 651-733-6383
>
> On 7/28/2010 7:41 AM, wtwc_yksdr wrote:
> >
> >
> > Hi. I have a question. I have constructed a cylinder and I apply a load
> > on the curvature surface. I have to simulate a situation where by the
> > laser is heating up the cylinder while it is rotating. I manage to
> > rotate the cylinder by constraining one of the face at a reference point.
> >
> > However, the computational time is very long and I am thinking if there
> > is other method to reduce the time taken to complete the simulation.
> >
> > Is it possible to move the laser load instead of the cylinder? Will that
> > help?
> >
> > In one simulation, the cylinder remain still and the laser load is
> > moving along the length of the cylinder and that takes a very short
> > time. So, I am hoping this works the same if only the load is moving.
> >
> > If yes, how do I do that? below is my dflux subroutine.
> >
> > SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
> > 1 TEMP,PRESS,SNAME)
> > C
> > INCLUDE 'ABA_PARAM.INC'
> > C
> > DIMENSION COORDS(3),FLUX(2),TIME(2)
> > CHARACTER*80 SNAME
> >
> > C A = Absorbtivity
> > C P = Incident Laser Power
> > C R = Laser Spot Size
> > C v = Scan Speed
> >
> > V=0.03333
> > P=250.0
> > R=0.0031
> > A=0.34
> > PART1=2*A*P*1/(R**2)
> >
> > x = COORDS(1)
> > y = COORDS(2)
> > z = COORDS(3)
> >
> > C FLUX(1) = laser power intensity distribution
> >
> > FLUX(1)=PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))
> > FLUX(2)=0.0
> >
> > RETURN
> > END
> >
> > p/s: this subroutine is for the laser moving along the length of the
> > cylinder
> >
> >
>


Reply | Threaded
Open this post in threaded view
|

Re: Re: Moving laser load around the cylinder

eblanco
Hi, wtwc_yksdr

I use the subrutine in a plane surface;

  X=(COORDS(1))
  Y=COORDS(2)
  DESP=0.012

  YDESP=Y-DESP
  IF ((((X-V*TME(1))**2.0+YDESP**2.0)**0.5)<= R) THEN
   FLUX(1)= (formula)
  END IF

-------------------------
DESP=advance in diferent steps in direction Y
R=radius
V=constante speed
Abaqus call the subrutine for every node in the surface with the flux, and
it do it one by one, giving to the subrutine the coordenates of the node.

The "if" control wich nodes are inside the radius to put the load over them.
My advance is just in one direction,  the result is a modulus that should be
lower that R, and it advance in X-direction.

You should do the same, with the if you tell abaqus where to apply the flux,
inside the radius of the spot.

You choose as surface just the external surface of the cilinder, and your
coordinates are in the center of the cylinder.

desp= distance between the place your center of coordinates and the place
along Z-direction where you want the laser.
z=length of the cylinder
alfa=atan(x,y)

zdesp=z-desp
if ((alfa-omega*time)^2+zdesp^2)^0.5<R)
 FLUX(1)=.....
end if


This is not  exactly FORTRAN is just the idea of how i do it.
Also i didnt add nothing about initial position in X, Y. If you want you
have to add and initial displacement, you have to do something to "alfa"
like i did to "z".

FLUX is a value, a number, no coordinates on it, is Jules/second (for me).
It is a value for each node in the surface, because "each node call the
subroutine" and the subroutine give back a value of the HEAT FLUX for this
node.

I hope you understand my english and it helps you. Ask again with any doubt
:)

Edgar

>
>


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

Reply | Threaded
Open this post in threaded view
|

Re: Moving laser load around the cylinder

wtwc_yksdr
That doesn't work for me.

This is my new code that i used.

      SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
     1 TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME

C     A = Absorbtivity
C     P = Incident Laser Power
C     R = Laser Spot Size
C     v = Scan Speed

     
      V=0.0333
      P=250.0
      R=0.0031
      A=0.34
      PART1=2*A*P*1/(R**2)

      x = COORDS(1)
      y = COORDS(2)
      z = COORDS(3)

C     A0 = initial angular position

      A0 = ATAN2(y,x)

C     OMEGA = Constant angular speed
      OMEGA = 52

      AC = 0.027*SIN(A0 + OMEGA*TIME(2))      

      FLUX(1) = PART1*EXP(-2*((z-0.1-V*TIME(2))**2+(x+AC)**2)/(R**2))

      FLUX(2)=0.0


      RETURN
      END

My cylinder is along z-axis. And i try to configure the laser to move along x axis at the same time as well put inputing AC into the FLUX(1) (I am trying to simulate the laser to move in a spiral direction) It does rotate but it generate 2 heat at the same time. They are both 180 degree apart. I am wondering what went wrong.

And also, is there anything wrong with this code? How do I write this code if I only want one heat flux at a time?


--- In [hidden email], Edgar Blanco <namcob@...> wrote:

>
> Hi, wtwc_yksdr
>
> I use the subrutine in a plane surface;
>
>   X=(COORDS(1))
>   Y=COORDS(2)
>   DESP=0.012
>
>   YDESP=Y-DESP
>   IF ((((X-V*TME(1))**2.0+YDESP**2.0)**0.5)<= R) THEN
>    FLUX(1)= (formula)
>   END IF
>
> -------------------------
> DESP=advance in diferent steps in direction Y
> R=radius
> V=constante speed
> Abaqus call the subrutine for every node in the surface with the flux, and
> it do it one by one, giving to the subrutine the coordenates of the node.
>
> The "if" control wich nodes are inside the radius to put the load over them.
> My advance is just in one direction,  the result is a modulus that should be
> lower that R, and it advance in X-direction.
>
> You should do the same, with the if you tell abaqus where to apply the flux,
> inside the radius of the spot.
>
> You choose as surface just the external surface of the cilinder, and your
> coordinates are in the center of the cylinder.
>
> desp= distance between the place your center of coordinates and the place
> along Z-direction where you want the laser.
> z=length of the cylinder
> alfa=atan(x,y)
>
> zdesp=z-desp
> if ((alfa-omega*time)^2+zdesp^2)^0.5<R)
>  FLUX(1)=.....
> end if
>
>
> This is not  exactly FORTRAN is just the idea of how i do it.
> Also i didnt add nothing about initial position in X, Y. If you want you
> have to add and initial displacement, you have to do something to "alfa"
> like i did to "z".
>
> FLUX is a value, a number, no coordinates on it, is Jules/second (for me).
> It is a value for each node in the surface, because "each node call the
> subroutine" and the subroutine give back a value of the HEAT FLUX for this
> node.
>
> I hope you understand my english and it helps you. Ask again with any doubt
> :)
>
> Edgar
>
> >
> >
>
>
> [Non-text portions of this message have been removed]
>


Reply | Threaded
Open this post in threaded view
|

Re: Re: Moving laser load around the cylinder

eblanco
Hi,

I am not sure, but i think that A0 is not initial angular position, cause
you use it all the time. You call  x and y the cordinates of a node, so A0
is the angel of a node (x,y) that is "calling" the subroutine at this time.

Also the angle that gives you back atan2 is the "same" just with diferent
sign , one positive another negative, so both will appear with flux, no?

I think that you should control it with an IF, with a condition that made it
take just one of it, the one you want.Something like;

IF ((TME(2).LE.2).AND.(A0.LE.0) THEN
      FLUX(1)=....
END
 Probably you will need many conditions...

Another solution (the one i like) is to do it in diferent steps each you
will activate the load in part of the surface, the one you need, and in the
next other surface, with this it will only be applied in the part you want
so it will not appear two sources.

I have not time to test my ideas or your ideas, i just write you what i
think. But i use subroutines for a for lines in a bended plate and i use one
step for each line, and diferent conditions in the suroutine for each step.

I hope you understand my english and it works.

Edgar


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

Reply | Threaded
Open this post in threaded view
|

Re: Re: Moving laser load around the cylinder

eblanco
Sorry , i mistake....

Forget what i said about the surfaces, it will not work in this way. And i
think with and IF controling the time you can not control it too,so my idea
is to do something like this.

alfa=atan2(x,y)
r=radius of the laser beam

if( ( ( alfa- (omega*time(2)) )**2+ (z-0.1-time(2)*V) **2)**0.5.LE.r )
          FLUX(1)=...
end if

As i understood alfa is the angle of the node abqus is caculating the flux.
Omega is the angular speed of the laser.
The z-dim i copy yours.
I think that with this it will only appear one point. I took my idea because
a spiral is a triangle around a cylinder. The base of the triangle is
(Alfa*radius of the cylinder) and high is Z.

I think is last time i answer you because i give more dark that light to the
topic.

Good luck ;)

Edgar


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

Reply | Threaded
Open this post in threaded view
|

Re: Re: Moving laser load around the cylinder

Dave Lindeman
In reply to this post by wtwc_yksdr
Yes, the speed would be in rad/sec.

ABAQUS knows nothing about the angular velocity -- the user subroutine
is simply turning the flux on and off as a function of the "current"
position of the nodes to simulate the rotation.

One thing I failed to mention was that in order for the position
tolerance test to work the angular position will need to be less than
2*PI.  So,

     PI = ACOS(-1.0D+00)
     AC = A0 + OMEGA*TIME(2)
10  IF (AC .GT. (2*PI)) THEN
     AC = AC-(2*PI)
     GOTO 10
     ENDIF

Regards,

Dave


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

On 8/2/2010 7:44 AM, wtwc_yksdr wrote:

>
>
> I still can't figure out how to make the laser beam move around the cylinder
>
> this is my fortran code
>
> SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
> 1 TEMP,PRESS,SNAME)
> C
> INCLUDE 'ABA_PARAM.INC'
> C
> DIMENSION COORDS(3),FLUX(2),TIME(2)
> CHARACTER*80 SNAME
>
> C A = Absorbtivity
> C P = Incident Laser Power
> C R = Laser Spot Size
> C v = Scan Speed
>
> P=250.0
> R=0.0031
> A=0.34
> PART1=2*A*P*1/(R**2)
>
> x = COORDS(1)
> y = COORDS(2)
> z = COORDS(3)
>
> C A0 = initial angular position
>
> A0 = ATAN2(y,x)
>
> C OMEGA = Constant angular speed
> OMEGA = 52
>
> AC = A0 + OMEGA*TIME(2)
>
> C Tolerance = angular position tolerence
> TOLERANCE = 0
>
> C FLUX_VALUE = non-zero flux
>
> FLUX_VALUE = PART1*EXP(-2*((z-0.1)**2+x**2)/(R**2))
>
> FLUX(2)=0.0
>
> IF (ABS(AL-AC) .LE. TOLERANCE) THEN
> FLUX(1) = FLUX_VALUE
> ELSE
> FLUX(1) = 0.0D+00
> ENDIF
>
> RETURN
> END
>
> Is the constant angular speed in radians/sec?
>
> I don't understand how the if and else function work.
>
> If i were to move the laser along the length of cylinder, i apply this:
>
> FLUX(1) = PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))
>
> by setting a constant velocity for example:
> V = 0.3333
>
> but for this AC, i do not know how to apply into the FLUX(1) or I don't
> need to do that?
>
> How will abaqus recognise AC as a constant angular velocity?
>
> Thanks.
>
> --- In [hidden email] <mailto:Abaqus%40yahoogroups.com>, Dave
> Lindeman <ddlindeman@...> wrote:
>  >
>  > If you're only interested in the heat transfer problem, then moving the
>  > heat flux will allow you to eliminate the structural degrees-of-freedom,
>  > which should result in a shorter run time.
>  >
>  > If the axis of the cylinder is parallel to the Z-axis, then the initial
>  > angular position A0 of a point is ATAN2(COORDS(2),COORDS(1)). If the
>  > cylinder is rotating at a constant speed OMEGA, then the current angular
>  > position AC is:
>  >
>  > AC = A0 + OMEGA*TIME(2)
>  >
>  > If the laser is located at AL, then:
>  >
>  > IF (ABS(AL-AC) .LE. TOLERANCE) THEN
>  > FLUX(1) = FLUX_VALUE
>  > ELSE
>  > FLUX(1) = 0.0D+00
>  > ENDIF
>  >
>  > where TOLERANCE is some angular position tolerance, and FLUX_VALUE is
>  > the non-zero flux you want applied.
>  >
>  > Regards,
>  >
>  > Dave
>  >
>  >
>  >
>  > -------------------------
>  > Dave Lindeman
>  > Lead Research Specialist
>  > 3M Company
>  > 3M Center 235-3F-08
>  > St. Paul, MN 55144
>  > 651-733-6383
>  >
>  > On 7/28/2010 7:41 AM, wtwc_yksdr wrote:
>  > >
>  > >
>  > > Hi. I have a question. I have constructed a cylinder and I apply a load
>  > > on the curvature surface. I have to simulate a situation where by the
>  > > laser is heating up the cylinder while it is rotating. I manage to
>  > > rotate the cylinder by constraining one of the face at a reference
> point.
>  > >
>  > > However, the computational time is very long and I am thinking if there
>  > > is other method to reduce the time taken to complete the simulation.
>  > >
>  > > Is it possible to move the laser load instead of the cylinder? Will
> that
>  > > help?
>  > >
>  > > In one simulation, the cylinder remain still and the laser load is
>  > > moving along the length of the cylinder and that takes a very short
>  > > time. So, I am hoping this works the same if only the load is moving.
>  > >
>  > > If yes, how do I do that? below is my dflux subroutine.
>  > >
>  > > SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
>  > > 1 TEMP,PRESS,SNAME)
>  > > C
>  > > INCLUDE 'ABA_PARAM.INC'
>  > > C
>  > > DIMENSION COORDS(3),FLUX(2),TIME(2)
>  > > CHARACTER*80 SNAME
>  > >
>  > > C A = Absorbtivity
>  > > C P = Incident Laser Power
>  > > C R = Laser Spot Size
>  > > C v = Scan Speed
>  > >
>  > > V=0.03333
>  > > P=250.0
>  > > R=0.0031
>  > > A=0.34
>  > > PART1=2*A*P*1/(R**2)
>  > >
>  > > x = COORDS(1)
>  > > y = COORDS(2)
>  > > z = COORDS(3)
>  > >
>  > > C FLUX(1) = laser power intensity distribution
>  > >
>  > > FLUX(1)=PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))
>  > > FLUX(2)=0.0
>  > >
>  > > RETURN
>  > > END
>  > >
>  > > p/s: this subroutine is for the laser moving along the length of the
>  > > cylinder
>  > >
>  > >
>  >
>
>


------------------------------------

Community email addresses:
  Post message: [hidden email]
  Subscribe:    [hidden email]
  Unsubscribe:  [hidden email]
  List owner:   [hidden email]

Shortcut URL to this page:
  http://groups.yahoo.com/group/AbaqusYahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/Abaqus/

<*> Your email settings:
    Individual Email | Traditional

<*> To change settings online go to:
    http://groups.yahoo.com/group/Abaqus/join
    (Yahoo! ID required)

<*> To change settings via email:
    [hidden email]
    [hidden email]

<*> To unsubscribe from this group, send an email to:
    [hidden email]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/

Reply | Threaded
Open this post in threaded view
|

Re: Moving laser load around the cylinder

wtwc_yksdr
Hi. thanks.

I have redeveloped the code with my supervisor. Apparently, Fortran recognise angle as degree. this is my code

      SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
     1 TEMP,PRESS,SNAME)
C
      INCLUDE 'ABA_PARAM.INC'
C
      DIMENSION COORDS(3),FLUX(2),TIME(2)
      CHARACTER*80 SNAME

C     A = Absorbtivity
C     P = Incident Laser Power
C     R = Laser Spot Size
C     v = Scan Speed

     
      V=0.0333
      P=250.0
      R=0.0031
      A=0.34
      PART1=2*A*P*1/(R**2)

      x = COORDS(1)
      y = COORDS(2)
      z = COORDS(3)

        FLUX(1)=0.0
         FLUX(2)=0.0

       
C     A0 = initial angular position

C      A0 = ATAN2(y,x)

C     OMEGA = Constant angular speed, 2988 degree per second
      OMEGA = 2988

*** here the positive angle is defined as the rotation of the laser beam from y axis to x axis
*** the original is (0,rc,0), rc is the radius of the cylinder
*** the angle is
        angle=omega*time(2)
        rc=0.027
*** the coordinates the laster spot center in x-y axes
        cx=rc*sin(angle)
        cy=rc*cos(angle)
**** only the cylindrical surface on the laser beam side is possibly subjected to laster heating
**** the condition can be realised by the following condition
        check=cx*x+cy*y
        if (check.lt.0.0) go to 1000
       

C     AC = 0.027*SIN(A0 + OMEGA*TIME(2))    
      AC = 0.027*SIN(OMEGA*TIME(2))  

        xnew=x*cos(angle)-y*sin(angle)
        d=sqrt(((z-V*TIME(2)-0.01)**2+xnew**2))

*** if the flux is negligibly small out side the laser spot zone,
*** then the following command can be applied
        if (d.gt.2*R) go to 1000
       

C     FLUX(1) = PART1*EXP(-2*((z-0.1-V*TIME(2))**2+(x+AC)**2)/(R**2))
      FLUX(1) = PART1*EXP((-2*d*d)/(R**2))



 1000 continue
      RETURN
      END


however, the problem i am facing at the moment is that there is another laser heat flux appears at 180 degree of the same spot of heat flux on the cylinder surface at the first few time steps. I can't seem to disable that. any idea wat adjustment i need to make?


--- In [hidden email], Dave Lindeman <ddlindeman@...> wrote:

>
> Yes, the speed would be in rad/sec.
>
> ABAQUS knows nothing about the angular velocity -- the user subroutine
> is simply turning the flux on and off as a function of the "current"
> position of the nodes to simulate the rotation.
>
> One thing I failed to mention was that in order for the position
> tolerance test to work the angular position will need to be less than
> 2*PI.  So,
>
>      PI = ACOS(-1.0D+00)
>      AC = A0 + OMEGA*TIME(2)
> 10  IF (AC .GT. (2*PI)) THEN
>      AC = AC-(2*PI)
>      GOTO 10
>      ENDIF
>
> Regards,
>
> Dave
>
>
> -------------------------
> Dave Lindeman
> Lead Research Specialist
> 3M Company
> 3M Center 235-3F-08
> St. Paul, MN 55144
> 651-733-6383
>
> On 8/2/2010 7:44 AM, wtwc_yksdr wrote:
> >
> >
> > I still can't figure out how to make the laser beam move around the cylinder
> >
> > this is my fortran code
> >
> > SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
> > 1 TEMP,PRESS,SNAME)
> > C
> > INCLUDE 'ABA_PARAM.INC'
> > C
> > DIMENSION COORDS(3),FLUX(2),TIME(2)
> > CHARACTER*80 SNAME
> >
> > C A = Absorbtivity
> > C P = Incident Laser Power
> > C R = Laser Spot Size
> > C v = Scan Speed
> >
> > P=250.0
> > R=0.0031
> > A=0.34
> > PART1=2*A*P*1/(R**2)
> >
> > x = COORDS(1)
> > y = COORDS(2)
> > z = COORDS(3)
> >
> > C A0 = initial angular position
> >
> > A0 = ATAN2(y,x)
> >
> > C OMEGA = Constant angular speed
> > OMEGA = 52
> >
> > AC = A0 + OMEGA*TIME(2)
> >
> > C Tolerance = angular position tolerence
> > TOLERANCE = 0
> >
> > C FLUX_VALUE = non-zero flux
> >
> > FLUX_VALUE = PART1*EXP(-2*((z-0.1)**2+x**2)/(R**2))
> >
> > FLUX(2)=0.0
> >
> > IF (ABS(AL-AC) .LE. TOLERANCE) THEN
> > FLUX(1) = FLUX_VALUE
> > ELSE
> > FLUX(1) = 0.0D+00
> > ENDIF
> >
> > RETURN
> > END
> >
> > Is the constant angular speed in radians/sec?
> >
> > I don't understand how the if and else function work.
> >
> > If i were to move the laser along the length of cylinder, i apply this:
> >
> > FLUX(1) = PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))
> >
> > by setting a constant velocity for example:
> > V = 0.3333
> >
> > but for this AC, i do not know how to apply into the FLUX(1) or I don't
> > need to do that?
> >
> > How will abaqus recognise AC as a constant angular velocity?
> >
> > Thanks.
> >
> > --- In [hidden email] <mailto:Abaqus%40yahoogroups.com>, Dave
> > Lindeman <ddlindeman@> wrote:
> >  >
> >  > If you're only interested in the heat transfer problem, then moving the
> >  > heat flux will allow you to eliminate the structural degrees-of-freedom,
> >  > which should result in a shorter run time.
> >  >
> >  > If the axis of the cylinder is parallel to the Z-axis, then the initial
> >  > angular position A0 of a point is ATAN2(COORDS(2),COORDS(1)). If the
> >  > cylinder is rotating at a constant speed OMEGA, then the current angular
> >  > position AC is:
> >  >
> >  > AC = A0 + OMEGA*TIME(2)
> >  >
> >  > If the laser is located at AL, then:
> >  >
> >  > IF (ABS(AL-AC) .LE. TOLERANCE) THEN
> >  > FLUX(1) = FLUX_VALUE
> >  > ELSE
> >  > FLUX(1) = 0.0D+00
> >  > ENDIF
> >  >
> >  > where TOLERANCE is some angular position tolerance, and FLUX_VALUE is
> >  > the non-zero flux you want applied.
> >  >
> >  > Regards,
> >  >
> >  > Dave
> >  >
> >  >
> >  >
> >  > -------------------------
> >  > Dave Lindeman
> >  > Lead Research Specialist
> >  > 3M Company
> >  > 3M Center 235-3F-08
> >  > St. Paul, MN 55144
> >  > 651-733-6383
> >  >
> >  > On 7/28/2010 7:41 AM, wtwc_yksdr wrote:
> >  > >
> >  > >
> >  > > Hi. I have a question. I have constructed a cylinder and I apply a load
> >  > > on the curvature surface. I have to simulate a situation where by the
> >  > > laser is heating up the cylinder while it is rotating. I manage to
> >  > > rotate the cylinder by constraining one of the face at a reference
> > point.
> >  > >
> >  > > However, the computational time is very long and I am thinking if there
> >  > > is other method to reduce the time taken to complete the simulation.
> >  > >
> >  > > Is it possible to move the laser load instead of the cylinder? Will
> > that
> >  > > help?
> >  > >
> >  > > In one simulation, the cylinder remain still and the laser load is
> >  > > moving along the length of the cylinder and that takes a very short
> >  > > time. So, I am hoping this works the same if only the load is moving.
> >  > >
> >  > > If yes, how do I do that? below is my dflux subroutine.
> >  > >
> >  > > SUBROUTINE DFLUX(FLUX,SOL,JSTEP,JINC,TIME,NOEL,NPT,COORDS,JLTYP,
> >  > > 1 TEMP,PRESS,SNAME)
> >  > > C
> >  > > INCLUDE 'ABA_PARAM.INC'
> >  > > C
> >  > > DIMENSION COORDS(3),FLUX(2),TIME(2)
> >  > > CHARACTER*80 SNAME
> >  > >
> >  > > C A = Absorbtivity
> >  > > C P = Incident Laser Power
> >  > > C R = Laser Spot Size
> >  > > C v = Scan Speed
> >  > >
> >  > > V=0.03333
> >  > > P=250.0
> >  > > R=0.0031
> >  > > A=0.34
> >  > > PART1=2*A*P*1/(R**2)
> >  > >
> >  > > x = COORDS(1)
> >  > > y = COORDS(2)
> >  > > z = COORDS(3)
> >  > >
> >  > > C FLUX(1) = laser power intensity distribution
> >  > >
> >  > > FLUX(1)=PART1*EXP(-2*((z-0.1-V*TIME(2))**2+x**2)/(R**2))
> >  > > FLUX(2)=0.0
> >  > >
> >  > > RETURN
> >  > > END
> >  > >
> >  > > p/s: this subroutine is for the laser moving along the length of the
> >  > > cylinder
> >  > >
> >  > >
> >  >
> >
> >
>