-
Junior Member
-
Notice in subroutine pdes8z (and gb8z) the comments:
UN8Z(1,I),UN8Z(2,I) hold the (rarely used) values of UI,UIx on
the previous time step or iteration.
Thus if you have an equation such as Ut = Uxx + exp(U), normally
you would just set LINEAR=.FALSE. and solve as a truly nonlinear
problem, but you could solve as Ut = Uxx + exp(UN8Z(1,1)) and it
would solve as if it were linear, but with the value of U in exp(U)
set to the value(s) on the last time step. So I guess this is what
you mean by solving as a quasilinear problem, isn't it?
I'm not sure there is much advantage of doing this as opposed to
solving as a nonlinear problem, in the time-dependent case (such as
your problem), but it is sometimes useful for highly nonlinear steady-state
problems, occasionally the "quasi-linear" approach will produce convergence
where the fully nonlinear approach will not.
-
Junior Member
-
If you have a linear (time-dependent) problem, where nothing but nonhomogeneous terms are functions of time, you can set NOUPDT=.TRUE. and only one LU decomposition will be done, on the first time step, and the savings in computer time is enormous. If you change to a nonlinear model (or quasi-linear), the matrix will change every step, and you should not set NOUPDT=.TRUE., as you know. However, you can, as I think you also have noticed, break the problem into many parts, with say, NPROB = 10 and set T0=(IPROB-1)*DT0, TF=IPROB*DT0, RESTRT=.TRUE., GRIDID=.TRUE., and, say NSTEPS=100, NOUPDT=.TRUE.. In this case, you will be taking a total of 1000 steps, but updating the matrix only every 100 steps (of size DT0/100), that might be reasonable if the problem is only slightly nonlinear.
Normally it is dangerous to set NOUPDT=.TRUE. for a nonlinear problem, in fact earlier versions automatically reset NOUPDT to .FALSE. if the user set LINEAR=.FALSE., but that is not done any more, to allow users to do precisely what you are thinking about doing. But be aware that if the matrix is changing rapidly and you are not updating, you could get bad answers, you'll need to rerun with different values of NPROB/NSTEPS to be sure the answers are good.
I would like to emphasize for the benefit of other readers, that for time-dependent problems, PDE2D users should normally ask for adaptive time step control, and then you will not need to even think about updating frequency of the matrix. This user has a problem which requires a very large amount of computer time, however, and he is trying some more sophisticated approaches to control the CPU time.
-
Junior Member
Hard work in front of me then
Thank you once again!
Posting Permissions
- You may not post new threads
- You may not post replies
- You may not post attachments
- You may not edit your posts
-
Forum Rules