Note: This discussion is about an older version of the COMSOL Multiphysics® software. The information provided may be out of date.

Discussion Closed This discussion was created more than 6 months ago and has been closed. To start a new discussion with a link back to this one, click here.

Problem with solver when using a nanosecond scale heatsource.

Please login with a confirmed email address before reporting spam

Hi,

I have a pulse train defined with a pulse width of 25ns and a frequency of 40kHz:
flc2hs(mod(t,3.3e-5)-1e-9,1e-10)-flc2hs(mod(t,3.3e-5)-26e-9,1e-10)

I wish to use this to pulse a 'laser' heat source on a block in 2D.
I am applying this pulse train to a cylinder embedded in the block which has an internal heat source
whose temperature is determined by beer-lamberts absorption law.
This cylinder is meant to repersent the laser radiation penetrating the block.

The problem I am having is when I solve for say a millisecond with time step of 5 ns the block's temperature is totally unchanged, with a uniform temperature of 273.15K.
Is there a problem with my solver time scale?
This model worked fine on larger timescales of around 1 second per pulse and a pulse width of 0.5s.
I'm new to COMSOL so not so confident with it yet.
Could someone help me with my problem.

-Thanks

5 Replies Last Post Feb 21, 2011, 6:02 a.m. EST
Ivar KJELBERG COMSOL Multiphysics(r) fan, retired, former "Senior Expert" at CSEM SA (CH)

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Feb 10, 2011, 1:17 a.m. EST
Hi

Check carefully your log, and the time stepping you have defined, then check the time steppintg type: Automatic = default is for assymptotical type bahaviour, if you have a periodic pulse train you should switch to intermediate or strickt and enshure that you have 2-3 steps during each rise /fall time periode to be sure the solver sees the steps, otherwise it wil "jump over" your short pulses. You can enforece larger steps once the pulse is passed to avoid waiting ages.

In 4.1 you can also define sets as parameters with the {} definitions, this helps setting up complex pulse ranges

--
Good luck
Ivar
Hi Check carefully your log, and the time stepping you have defined, then check the time steppintg type: Automatic = default is for assymptotical type bahaviour, if you have a periodic pulse train you should switch to intermediate or strickt and enshure that you have 2-3 steps during each rise /fall time periode to be sure the solver sees the steps, otherwise it wil "jump over" your short pulses. You can enforece larger steps once the pulse is passed to avoid waiting ages. In 4.1 you can also define sets as parameters with the {} definitions, this helps setting up complex pulse ranges -- Good luck Ivar

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Feb 11, 2011, 4:57 a.m. EST
Hi Ivar,

Thanks you for your prompt and helpful response.
I have set my solver to strict and it now seems to be calculating correctly
I am intrigued about what you said regarding having 2-3 time steps per pulse and then having large time steps between pulses.
I have only been able to set one uniform time step for the solver, how do I go about setting one which varies with time?

Thanks.
Hi Ivar, Thanks you for your prompt and helpful response. I have set my solver to strict and it now seems to be calculating correctly I am intrigued about what you said regarding having 2-3 time steps per pulse and then having large time steps between pulses. I have only been able to set one uniform time step for the solver, how do I go about setting one which varies with time? Thanks.

Ivar KJELBERG COMSOL Multiphysics(r) fan, retired, former "Senior Expert" at CSEM SA (CH)

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Feb 11, 2011, 7:05 a.m. EST
Hi

the time set is just a column of time values, you can define them as several range(,,) operators (provided they respect a strict increasing or decreasing sequence) or just as a list of time values. You can also add functions either via the "range sub-GUI" or directly as 10^range(,,) ...

you can also have several parameters, and then make double lists etc.

The same in V4 (not 3.5 ;( Paramter might be defined as:

mylist = { 0 1 2 3 4 5.5 6.6 7.7 } etc and then you can use this (with the {})

--
Good luck
Ivar
Hi the time set is just a column of time values, you can define them as several range(,,) operators (provided they respect a strict increasing or decreasing sequence) or just as a list of time values. You can also add functions either via the "range sub-GUI" or directly as 10^range(,,) ... you can also have several parameters, and then make double lists etc. The same in V4 (not 3.5 ;( Paramter might be defined as: mylist = { 0 1 2 3 4 5.5 6.6 7.7 } etc and then you can use this (with the {}) -- Good luck Ivar

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Feb 21, 2011, 5:49 a.m. EST
Hi Ivar,

That's very helpful thank you.
Is there a way to combine the range function with the modulo function so that I can define my region of dense time stepping and my region of coarse time stepping and then use the modulo function to get it to repeat periodically?

I've tried things like:
mod({(range(0,2e-9,25e-9),range(25e-9,1e-5,2.5e-5)),0})
&
mod({range(0,2e-9,25e-9),0}), mod({range(25e-9,1e-5,2.5e-5),0})

but COMSOL gives erros when I try and solve.

Otherwise it seems if I want to solve for 1 ms I will have to enter 80 different range vectors manually.
Hi Ivar, That's very helpful thank you. Is there a way to combine the range function with the modulo function so that I can define my region of dense time stepping and my region of coarse time stepping and then use the modulo function to get it to repeat periodically? I've tried things like: mod({(range(0,2e-9,25e-9),range(25e-9,1e-5,2.5e-5)),0}) & mod({range(0,2e-9,25e-9),0}), mod({range(25e-9,1e-5,2.5e-5),0}) but COMSOL gives erros when I try and solve. Otherwise it seems if I want to solve for 1 ms I will have to enter 80 different range vectors manually.

Ivar KJELBERG COMSOL Multiphysics(r) fan, retired, former "Senior Expert" at CSEM SA (CH)

Please login with a confirmed email address before reporting spam

Posted: 1 decade ago Feb 21, 2011, 6:02 a.m. EST
Hi

I haven't tried that one, not sure it works.

But I believe you can test in as a "parameter", because parameters with a { } bracket accept lists ( !! in V4 only )

I agree from an eigenfrequency list it would be nice to be able to quickly generate a good frequency scan range (automatically). Something to suggest to COMSOL I believe

--
Good luck
Ivar
Hi I haven't tried that one, not sure it works. But I believe you can test in as a "parameter", because parameters with a { } bracket accept lists ( !! in V4 only ) I agree from an eigenfrequency list it would be nice to be able to quickly generate a good frequency scan range (automatically). Something to suggest to COMSOL I believe -- Good luck Ivar

Note that while COMSOL employees may participate in the discussion forum, COMSOL® software users who are on-subscription should submit their questions via the Support Center for a more comprehensive response from the Technical Support team.