Skip to main content
29 events
when toggle format what by license comment
Jul 15, 2021 at 14:23 comment added user21 Thanks anyways!
Jul 15, 2021 at 13:57 comment added Oleksii Semenov @user21 Interesting problem of course. Unfortunately I did not have experience with geometrical nonlinearity. So I am also waiting the solution and follow the discussion:)
Mar 25, 2019 at 14:31 vote accept Oleksii Semenov
Mar 25, 2019 at 12:08 comment added Oleksii Semenov @Alex Trounev. Thanks a lot for the active participation in solution of the problem! Unfortunately, I can not follow you and others participations of discussion quickly enough due to my lack of experience in Wolfram Language. It takes me time to understand deeply the proposed algorithms. Everything you post is useful for me. Now I just trying to sort out the details of algorithm proposed by Henrik Schumacher and compare calculation results obtained by different codes.
Mar 25, 2019 at 7:01 comment added user21 You would use linCoeffs=InitializePDECoefficients[linear coefficients]; lin=Discretize[linCoeffs]; and in the loop nonLin=InitializePDECoefficients[nonlinear coeffs]; nonlin=Discretize[nonLin]; stifffness = lin["StiffnessMatrix"] + nonlin["StiffnessMatrix"]; etc..
Mar 24, 2019 at 14:34 comment added Alex Trounev @OleksiiSemenov See my answer. You can effectively reduce the time by 50-100 times to half a second using the algorithm proposed by Henrik Schumacher
Mar 23, 2019 at 10:31 answer added Henrik Schumacher timeline score: 12
Mar 22, 2019 at 12:56 answer added Alex Trounev timeline score: 9
Mar 22, 2019 at 12:33 comment added Oleksii Semenov @Alex Trounev thanks you for a helpful link. It's really excellent post. But there only 1D case of Stefans problem is considered if I'am not mistaken. The approach used is the similar of course
Mar 22, 2019 at 12:23 comment added Oleksii Semenov @user21 could you please show how to split the discretization. By the way is it possible to calculate separately stiffness matrix and mass matrix in discretePDE. In the case considered the stiffness matrix remains constant and there is no necessity to calculate it at each time step.
Mar 22, 2019 at 12:07 comment added Oleksii Semenov @user21 The code in the post is already complete or you can download good edited code from here code. I also tried Pardiso, but BiCGSTAB showed the best time.
Mar 22, 2019 at 11:39 history edited Oleksii Semenov CC BY-SA 4.0
added 372 characters in body
Mar 22, 2019 at 10:29 history edited Oleksii Semenov CC BY-SA 4.0
added 2 characters in body
Mar 22, 2019 at 6:00 history tweeted twitter.com/StackMma/status/1108971698831921153
Mar 22, 2019 at 5:53 comment added user21 I would be good if you could give a complete code, without it is just guessing. You could also split the InitilizePDECoefficient into a linear and a nonlinear part. Discretize the linear part before the loop and then do linearDiscretePDE["SystemMatrices"] + nonlinearDiscretePDE["SystemMatrices"]. Before using "Krylov" try Method->"Pardiso" for LinearSolve.
Mar 21, 2019 at 19:05 comment added Alex Trounev This is similar to the problem of Stefan with a moving boundary. The solution method is used without explicit determination of the moving boundary. For 2D a similar solution to the problem gave Tim Laska on mathematica.stackexchange.com/questions/184920/…
Mar 21, 2019 at 13:42 comment added Oleksii Semenov I have little bit changed the post to clarify the question. But I have no idea how to circumvent interpolation in calculation of Ceff(T). @Henrik Schumacher clarify please your suggestion “Try generate the next iteration's "DampingCoefficients" from the previous iteration's x directly”. I can not understand it.
Mar 21, 2019 at 12:53 history edited Oleksii Semenov CC BY-SA 4.0
added 332 characters in body
Mar 21, 2019 at 12:26 comment added Henrik Schumacher Well, then a complete code would help. I have to test against something...
Mar 21, 2019 at 11:46 comment added Oleksii Semenov @Henrik Schumacher thank you for the suggestion. Of course it is very interesting for me to learn handling with sparse solver options. Show me please how to adjust this options.
Mar 21, 2019 at 11:27 comment added Oleksii Semenov Of course code is incomplete. Sorry. I forgot to input to the post important part of the code. I also tried to use "StartingVector" to set initial solution vector for BCGStab. For initial approximation I took the solution from the last time step is used. But the computation time has become larger so that with the default "StartingVector" solver find solution faster for this certain problem. Interesting, what initial approximation is used in BCGStab as a default? DiscretizePDE[] procedure for nonlinear problem of course consumes more time than linear solver.
Mar 21, 2019 at 11:26 history edited Oleksii Semenov CC BY-SA 4.0
added 516 characters in body
Mar 21, 2019 at 9:41 history edited Henrik Schumacher
edited tags
Mar 21, 2019 at 9:37 comment added Henrik Schumacher Ah, and converting x into an InterpolatingFunction in order to discretize it again in the next iteration is just a waste. Try generate the next iteration's "DampingCoefficients" from the previous iteration's x directly; this should basically amount to EffectHeatCapac /@( density x), no? (EffectHeatCapac[ density x] might also work...)
Mar 21, 2019 at 9:32 comment added Henrik Schumacher When you will have added the rest of the code I may show you how to use SparseArray`KrylovLinearSolve; so please ping me with @Henrik in a comment when you are done.
Mar 21, 2019 at 9:30 comment added Henrik Schumacher When you use the method "Krylov" for transient PDE, it is usually a very good idea to supply the solution of the linear system of the previous time iteration as value for "StartingVector". You should also try to find suitable values for the "Tolerance" option; the default values are usually way too low. Moreover, using the backend SparseArray`KrylovLinearSolve directly is usually a bit faster and also allows for reusing the preconditioner (generated by SparseArray`SparseMatrixILU and applied with SparseArray`SparseMatrixApplyILU).
Mar 21, 2019 at 9:23 comment added Henrik Schumacher The code seems to be incomplete. For instance, methodData is undefined. Please edit your post and add all relevant code.
Mar 21, 2019 at 9:15 review First posts
Mar 21, 2019 at 11:30
Mar 21, 2019 at 9:11 history asked Oleksii Semenov CC BY-SA 4.0