# Moving laser load around the cylinder Classic List Threaded 9 messages Open this post in threaded view
|

## Moving laser load around the cylinder

 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
Open this post in threaded view
|

## Re: Moving laser load around the cylinder

Open this post in threaded view
|

## Re: Moving laser load around the cylinder

 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 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 > > > > >
Open this post in threaded view
|

## Re: Re: Moving laser load around the cylinder

 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 > [Non-text portions of this message have been removed]
Open this post in threaded view
|

## Re: Moving laser load around the cylinder

Open this post in threaded view
|

## Re: Re: Moving laser load around the cylinder

 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]
Open this post in threaded view
|

## Re: Re: Moving laser load around the cylinder

 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]