├── .github └── FUNDING.yml ├── .gitignore ├── Examples ├── E001 │ ├── Coduction1D.mo │ └── readme.md ├── E002 │ └── TestPde.mo ├── E003 │ ├── HeatTransfer.mo │ ├── array2time.mo │ └── readme.md ├── E004 │ ├── advection.mo │ └── readme.md ├── E005 │ ├── burgereqn.mo │ └── readme.md ├── E006 │ ├── advection2.mo │ └── readme.md ├── E007 │ ├── Heat_diffusion_Test_1D.mo │ └── readme.md └── readme.md └── readme.md /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: Foadsf # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | other/ 2 | references/ 3 | Examples/E002/TestPde.mo 4 | 5 | *.pdf 6 | *.ppt 7 | -------------------------------------------------------------------------------- /Examples/E001/Coduction1D.mo: -------------------------------------------------------------------------------- 1 | model Coduction1D 2 | 3 | parameter Real rho =1; //Material density 4 | parameter Real Cp=1; // specific heat capacity of the material 5 | parameter Real L=1; // Length of the rod 6 | parameter Real k=1; // heat conduction coefficient 7 | parameter Real Tlo=0; //cold-end tempreture 8 | parameter Real Thi=100; //hot-end tempreture 9 | parameter Real Tinit =30; // rod's initial tempreture 10 | parameter Integer N=10; // Number of segments 11 | parameter Real deltaX =L/N; // discritization length 12 | 13 | Real T[N-1]; // state variables representing rod temreture 14 | 15 | 16 | initial equation 17 | 18 | for i in 1:N-1 loop 19 | T[i]=Tinit; 20 | end for; 21 | 22 | equation 23 | 24 | rho*Cp*der(T[1])=k*(T[2]-2*T[1]+Thi)/(deltaX^2); 25 | rho*Cp*der(T[N-1])=k*(Tlo-2*T[N-1]+T[N-2])/(deltaX^2); 26 | 27 | for i in 2:N-2 loop 28 | rho*Cp*der(T[i])=k*(T[i+1]-2*T[i]+T[i-1])/(deltaX^2); 29 | end for; 30 | 31 | end Coduction1D; 32 | -------------------------------------------------------------------------------- /Examples/E001/readme.md: -------------------------------------------------------------------------------- 1 | This was copied from [this youtube video](https://www.youtube.com/watch?v=xtKLaG0tCgY) by [Hosam K. Fathy](https://www.linkedin.com/in/hosam-fathy-77ba233/). 2 | 3 | This example addresses solving heat equation in a one dimensional rod using finite difference numerical method (second order central difference). The rod has two constant low temperature and high temperature ending, hence a one dimensional partial differential equation with Dirichlet boundary condition. 4 | To run this simulation you may use OpenModelica GUI. 5 | -------------------------------------------------------------------------------- /Examples/E002/TestPde.mo: -------------------------------------------------------------------------------- 1 | model TestPde 2 | parameter Integer l = 10 "lenght"; 3 | parameter Integer n = 30 "Number of section"; 4 | parameter Real deltax = l / n "section lenght"; 5 | parameter Real C = 1 "diffusion coefficient"; 6 | 7 | parameter Real Ts(unit = "s") = 0.01 "time bettween samples"; 8 | discrete Real T[n](start = fill(0, n)); 9 | Real T0 = 0; 10 | equation 11 | T[1] = T0 "initial condition"; 12 | T[n] = T[n - 1] "limit condition"; 13 | for i in 2:n-1 loop 14 | when sample(0,Ts) then 15 | T[n] = pre(T[i]) + Ts * (C * ( pre(T[i+1]) + pre(T[i-1]) -2*pre(T[i])/ deltax^2)); 16 | end when; 17 | end for; 18 | end TestPde; 19 | -------------------------------------------------------------------------------- /Examples/E003/HeatTransfer.mo: -------------------------------------------------------------------------------- 1 | model HeatTransfer "One Dimensional Heat Transfer" 2 | import Modelica.SIunits; 3 | //Configuration parameters 4 | parameter Integer n = 100 "Number of Nodes"; 5 | parameter SIunits.Density rho = 1 "Material Density"; 6 | parameter SIunits.HeatCapacity c_p = 1; 7 | parameter SIunits.ThermalConductivity k = 1; 8 | parameter SIunits.Length L = 10 "Domain Length"; 9 | //Temperature Array 10 | SIunits.Temp_K T_array[n](start = fill(300, n)) "Nodal Temperatures"; 11 | //variabes 12 | Real x_array[n]; 13 | Real x; 14 | Real T; 15 | protected 16 | // Computed parameters 17 | parameter SIunits.Length dx = L / n "Distance between nodes"; 18 | equation 19 | // Loop over interior nodes 20 | for i in 2:n - 1 loop 21 | x_array[i] = i * dx; 22 | rho * c_p * der(T_array[i]) = k * (T_array[i + 1] - 2 * T_array[i] + T_array[i - 1]) / dx ^ 2; 23 | end for; 24 | // Boundary Conditions 25 | x_array[1] = 0; 26 | x_array[n] = L; 27 | T_array[1] = 1000; 28 | T_array[n] = 300; 29 | //array2time 30 | x = array2time(x_array, time); 31 | T = array2time(T_array, time); 32 | end HeatTransfer; 33 | -------------------------------------------------------------------------------- /Examples/E003/array2time.mo: -------------------------------------------------------------------------------- 1 | function array2time 2 | //this function gets an array of data and the time 3 | //it returns a time dependend stepwise result 4 | //each array value corresponds to a specific time interval 5 | input Real array[:]; 6 | input Real time; 7 | output Real result; 8 | protected 9 | Integer array_length; 10 | Real delta_time; 11 | Real stop_time; 12 | algorithm 13 | stop_time:= 1; 14 | array_length := size(array,1); //number of values 15 | delta_time:=stop_time/(array_length-1); //size of time interval 16 | for k in 1:array_length loop 17 | if time >delta_time*(k-1)-delta_time/2 and time <= delta_time*k-delta_time/2 then 18 | result:=array[k]; 19 | end if; 20 | end for; 21 | //if time >=stop_time-delta_time/2 then 22 | // result:=array[array_length-1]; 23 | //end if; 24 | end array2time; 25 | -------------------------------------------------------------------------------- /Examples/E003/readme.md: -------------------------------------------------------------------------------- 1 | source: 2 | https://openmodelica.org/forum/default-topic/182-partial-differential-equations-in-om 3 | 4 | 5 | i was able to run this example in OpenModelica GUI. how ever the source is using OMShell. I still to learn how to do that. 6 | -------------------------------------------------------------------------------- /Examples/E004/advection.mo: -------------------------------------------------------------------------------- 1 | model advection 2 | //u_t+u_x=0 3 | constant Integer N = 100; 4 | parameter Real L = 1; 5 | parameter Real dx = L / (N - 1); 6 | //parameter Real[N] x = array(i * dx for i in 0:N - 1); 7 | parameter Real c = 1; 8 | Real[N] u, u_x; 9 | initial equation 10 | for i in 1:N loop 11 | u[i] = if x[i] < 0.25 then cos(2 * 3.14 * x[i]) else 0; 12 | end for; 13 | equation 14 | //unused array elements, eqs. just for balanced system: 15 | u_x[1] = 0; 16 | u_x[N] = 0; 17 | for i in 2:N - 1 loop 18 | // discretization of spatial derivative: 19 | u_x[i] = (u[i + 1] - u[i - 1]) / (2 * dx); 20 | // the equation: 21 | der(u[i]) + c * u_x[i] = 0; 22 | end for; 23 | u[1] = 1; 24 | // left BC 25 | u[N] = 2 * u[N - 1] - u[N - 2]; 26 | //extrapolation in the last node 27 | annotation(experiment(Interval = 0.002)); 28 | end advection; 29 | -------------------------------------------------------------------------------- /Examples/E004/readme.md: -------------------------------------------------------------------------------- 1 | source: 2 | http://www.modprod.liu.se/openmodelica-2015/1.620221/OpenModelica2015-talk05-PDEInModelica_silar.pdf 3 | 4 | by Jan Silar 5 | -------------------------------------------------------------------------------- /Examples/E005/burgereqn.mo: -------------------------------------------------------------------------------- 1 | model burgereqn 2 | Real u[N + 2](start = u0); 3 | parameter Real h = 1 / (N + 1); 4 | parameter Integer N = 10; 5 | parameter Real v = 234; 6 | parameter Real Pi = 3.14159265358979; 7 | parameter Real u0[N + 2] = array(sin(2 * Pi * x[i]) + 0.5 * sin(Pi * x[i]) for i in 1:N + 2); 8 | parameter Real x[N + 2] = array(h * i for i in 1:N + 2); 9 | equation 10 | der(u[1]) = 0; 11 | for i in 2:N + 1 loop 12 | der(u[i]) = (-(u[i + 1] ^ 2 - u[i - 1] ^ 2) / (4 * (x[i + 1] - x[i - 1]))) + v / (x[i + 1] - x[i - 1]) ^ 2 * (u[i + 1] - 2 * u[i] + u[i + 1]); 13 | end for; 14 | der(u[N + 2]) = 0; 15 | end burgereqn; 16 | -------------------------------------------------------------------------------- /Examples/E005/readme.md: -------------------------------------------------------------------------------- 1 | source: 2 | https://stackoverflow.com/questions/13603769/using-coupled-system-of-pdes-in-modelica 3 | 4 | burger equation 5 | -------------------------------------------------------------------------------- /Examples/E006/advection2.mo: -------------------------------------------------------------------------------- 1 | model advection2 2 | parameter Real L = 1; 3 | parameter Integer N = 100; 4 | parameter Real dx = L / (N - 1); 5 | //parameter Real[N] x = array(i * dx for i in 0:N - 1); 6 | parameter Real c = 1; 7 | Real u[N], ux[N]; 8 | initial equation 9 | for i in 1:N loop 10 | u[i] = 0; 11 | end for; 12 | equation 13 | 14 | if c>0 then 15 | u[N] = time ^ 2; 16 | ux[N] = 0; 17 | for i in 1:N-1 loop 18 | u[i] = u[i + 1] - dx * ux[i]; 19 | der(u[i]) = c*ux[i]; 20 | end for; 21 | else 22 | u[1] = time ^ 2; 23 | ux[1] = 0; 24 | for i in 2:N loop 25 | u[i] = u[i - 1] + dx * ux[i]; 26 | der(u[i]) = c*ux[i]; 27 | end for; 28 | end if; 29 | end advection2; 30 | -------------------------------------------------------------------------------- /Examples/E006/readme.md: -------------------------------------------------------------------------------- 1 | solve the advection pde with both negative and positive coefficients 2 | more info here: 3 | https://stackoverflow.com/questions/45496863/openmodelica-solving-a-pde-initialization-error/45526159#45526159 4 | and here: 5 | https://scicomp.stackexchange.com/questions/27569/finite-difference-method-in-modelica-not-working-for-advection-pde-with-negative/27570?noredirect=1#comment49435_27570 6 | -------------------------------------------------------------------------------- /Examples/E007/Heat_diffusion_Test_1D.mo: -------------------------------------------------------------------------------- 1 | package Heat_diffusion_Test_1D 2 | import SI = Modelica.SIunits; 3 | 4 | model HeatDiffusion1D 5 | import SI = Modelica.SIunits; 6 | parameter SI.Length L = 1; 7 | import Heat_diffusion_Test_1D.Fields.*; 8 | import Heat_diffusion_Test_1D.Domains.*; 9 | import Heat_diffusion_Test_1D.FieldDomainOperators1D.*; 10 | import Heat_diffusion_Test_1D.DifferentialOperators1D.*; 11 | constant Real PI = Modelica.Constants.pi; 12 | Domain1D rod(left = 0, right = L, n = 50); 13 | Field1D u(domain = rod, redeclare type FieldValueType = SI.Temperature, start = array(20 * sin(PI / 2 * x) + 300 for x in rod.x)); 14 | equation 15 | interior(der(u.val)) = interior(4 * pder(u, x = 2)); 16 | left(u.val) = 20 * sin(PI / 12 * time) + 300; 17 | right(pder(u, x = 1)) = 0; 18 | //right(u.val)=320; 19 | annotation(Icon(coordinateSystem(preserveAspectRatio = false)), Diagram(coordinateSystem(preserveAspectRatio = false))); 20 | end HeatDiffusion1D; 21 | 22 | package Fields 23 | record Field1D "Field over a 1D spatial domain" 24 | replaceable type FieldValueType = Real; 25 | parameter Domains.Domain1D domain; 26 | parameter FieldValueType start[domain.n] = zeros(domain.n); 27 | FieldValueType val[domain.n](start = start); 28 | annotation(Icon(coordinateSystem(preserveAspectRatio = false)), Diagram(coordinateSystem(preserveAspectRatio = false))); 29 | end Field1D; 30 | annotation(); 31 | end Fields; 32 | 33 | package Domains 34 | import SI = Modelica.SIunits; 35 | 36 | record Domain1D "1D spatial domain" 37 | parameter SI.Length left = 0.0; 38 | parameter SI.Length right = 1.0; 39 | parameter Integer n = 100; 40 | parameter SI.Length dx = (right - left) / (n - 1); 41 | parameter SI.Length x[n] = linspace(right, left, n); 42 | annotation(Icon(coordinateSystem(preserveAspectRatio = false)), Diagram(coordinateSystem(preserveAspectRatio = false))); 43 | end Domain1D; 44 | annotation(); 45 | end Domains; 46 | 47 | package FieldDomainOperators1D "Selection operators of field on 1D domain" 48 | function left "Returns the left value of the field vector v1" 49 | input Real[:] v1; 50 | output Real v2; 51 | annotation(Inline = true); 52 | algorithm 53 | v2 := v1[1]; 54 | end left; 55 | 56 | function right "Returns the left value of the field vector v1" 57 | input Real[:] v1; 58 | output Real v2; 59 | annotation(Inline = true); 60 | algorithm 61 | v2 := v1[end]; 62 | end right; 63 | 64 | function interior "returns the interior values of the field as a vector" 65 | input Real v1[:]; 66 | output Real v2[size(v1, 1) - 2]; 67 | annotation(Inline = true); 68 | algorithm 69 | v2 := v1[2:end - 1]; 70 | end interior; 71 | 72 | end FieldDomainOperators1D; 73 | 74 | package DifferentialOperators1D "Finite difference differential operators" 75 | function pder "returns vector of spatial derivative values of a 1D field" 76 | input Heat_diffusion_Test_1D.Fields.Field1D f; 77 | input Integer x = 1 "Diff order - first or second order derivative"; 78 | output Real df[size(f.val, 1)]; 79 | annotation(Inline = true); 80 | algorithm 81 | df := if x == 1 then SecondOrder.diff1(f.val, f.domain.dx) else SecondOrder.diff2(f.val, f.domain.dx); 82 | end pder; 83 | 84 | package SecondOrder "Second order polynomial derivative approximations" 85 | function diff1 "First derivative" 86 | input Real u[:]; 87 | input Real dx; 88 | output Real du[size(u, 1)]; 89 | annotation(Inline = true); 90 | algorithm 91 | du := cat(1, {((-3 * u[1]) + 4 * u[2] - u[3]) / 2 / dx}, (u[3:end] - u[1:end - 2]) / 2 / dx, {(3 * u[end] - 4 * u[end - 1] + u[end - 2]) / 2 / dx}); 92 | end diff1; 93 | 94 | function diff2 95 | input Real u[:]; 96 | input Real dx; 97 | output Real du2[size(u, 1)]; 98 | annotation(Inline = true); 99 | algorithm 100 | du2 := cat(1, {(2 * u[1] - 5 * u[2] + 4 * u[3] - u[4]) / dx / dx}, (u[3:end] - 2 * u[2:end - 1] + u[1:end - 2]) / dx / dx, {(2 * u[end] - 5 * u[end - 1] + 4 * u[end - 2] - u[end - 3]) / dx / dx}); 101 | end diff2; 102 | annotation(); 103 | end SecondOrder; 104 | 105 | package FirstOrder "First order polynomial derivative approximations" 106 | function diff1 "First derivative" 107 | input Real u[:]; 108 | input Real dx; 109 | output Real du[size(u, 1)]; 110 | annotation(Inline = true); 111 | algorithm 112 | // Left, central and right differences 113 | du := cat(1, {(u[2] - u[1]) / dx}, (u[3:end] - u[1:end - 2]) / 2 / dx, {(u[end] - u[end - 1]) / dx}); 114 | end diff1; 115 | annotation(); 116 | end FirstOrder; 117 | annotation(); 118 | 119 | end DifferentialOperators1D; 120 | annotation(uses(Modelica(version = "3.2.1"))); 121 | end Heat_diffusion_Test_1D; 122 | -------------------------------------------------------------------------------- /Examples/E007/readme.md: -------------------------------------------------------------------------------- 1 | source: 2 | https://stackoverflow.com/questions/37157904/1d-heat-diffusion-pde-implementation-in-modelicadymola 3 | 4 | not working. I tried the advice in the comments but it did not work. 5 | -------------------------------------------------------------------------------- /Examples/readme.md: -------------------------------------------------------------------------------- 1 | to do: 2 | 1. example E002 not working! it is not an example at all 3 | 2. example E005, does run fine but all the u[i]s are constant! 4 | 3. example E007 not working 5 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Why?! 2 | 3 | When I started using Modelica a couple of years ago, I thought that I have finally found the single platform to do all my simulations. Obviously, I couldn't be more wrong. As a mechanical engineer, we deal with a lot of simulations, including continuous systems with governing partial differential equations. You would assume that this should be a solved problem by now, but apparently, there is nothing but a lot of questions asked in different forums, none answered properly. So I'm making this repository out of frustration to collect all the available examples I can find anywhere on the internet. Plus, all the relevant publications, all the questions asked in different forums, and other useful resources. 4 | 5 | ## to do: 6 | 1. investigate google search results and adding links to this page 7 | 2. looking into the litterer and finding relevant papers and adding to the list 8 | 3. writing summary for papers 9 | 10 | ## Working examples: 11 | 1. https://www.youtube.com/watch?v=xtKLaG0tCgY 12 | 1. http://omwebbook.openmodelica.org/static/ApplicationEx/PressureDynamics.html 13 | 14 | 15 | ## Not working examples: 16 | 1. https://openmodelica.org/forum/default-topic/182-partial-differential-equations-in-om#p8013 17 | 2. https://openmodelica.org/forum/default-topic/497-modelling-partial-differential-equation-using-pre-operator#p8016 18 | 19 | 20 | 21 | ## Modelica sources: 22 | 1. http://omwebbook.openmodelica.org/ 23 | 24 | ## Publications (exported from Google Scholar): 25 | 1. Saldamli, Levon, and Peter Fritzson. "Domains and Partial Differential Equations in Modelica." 42nd Conference on Simulation and Modeling (SIMS2001), 8-9 October 2001, Telemark University, Porsgrunn, Norway. 2001. 26 | 2. Tiller, Michael, ed. Introduction to physical modeling with Modelica. Vol. 615. Springer, 2001. 27 | 3. Saldamli, Levon, Peter Fritzson, and Bernhard Bachmann. "Extending Modelica for partial differential equations." 2nd International Modelica Conference, proceedings. 2002. 28 | 4. Casella, Francesco, and Francesco Schiavo. "Modelling and simulation of heat exchangers in Modelica with finite element methods." Proceedings of the 3rd International Modelica Conference. 2003. 29 | 5. Sheshadri, Krishnamurthy, and Peter Fritzson. "A general symbolic PDE solver generator: Beyond explicit schemes." Scientific Programming 11.3 (2003): 225-235. 30 | 6. Saldamli, Levon, et al. "A framework for describing and solving PDE models in Modelica." Paper presented at the 4th International Modelica Conference. 2005. 31 | 7. Li, Zhihua, Huili Zhang, and Ling Zheng. "Description of PDE models in modelica." Computer Science and Computational Technology, 2008. ISCSCT'08. International Symposium on. Vol. 1. IEEE, 2008. 32 | 8. Li, Zhihua, Ling Zheng, and Huili Zhang. "Solving pde models in modelica." Information Science and Engineering, 2008. ISISE'08. International Symposium on. Vol. 1. IEEE, 2008. 33 | 9. Li, Zhihua, Ling Zheng, and Huili Zhang. "Modelling and simulation of PDE problems in Modelica." International Journal of Materials and Structural Integrity 3.4 (2009): 318-331. 34 | 10. Wiechert, Wolfgang, Stephan Noack, and Atya Elsheikh. "Modeling languages for biochemical network simulation: reaction vs equation based approaches." Biosystems Engineering II. Springer Berlin Heidelberg, 2009. 109-138. 35 | 11. Ljubijankic, Manuel, et al. "Numerical coupling of Modelica and CFD for building energy supply systems." Proceedings of the 8th International Modelica Conference; March 20th-22nd; Technical Univeristy; Dresden; Germany. No. 063. Linköping University Electronic Press, 2011. 36 | 12. Bergero, Federico, et al. "Mecánica Computacional, Volume XXXII. Number 14. Fluid Mechanics (B)." (2013). 37 | 13. Hammadi, Moncef, et al. "Integrating Radial Basis Functions with Modelica for Mechatronic Design." Design and Modeling of Mechanical Systems. Springer, Berlin, Heidelberg, 2013. 19-25. 38 | 14. Stavåker, Kristian, et al. "PDE modeling with Modelica via FMI import of HiFlow3 C++ components." Proceedings of SIMS 54th Conference on Simulation and Modelling. Bergen, Norway. 2013. 39 | 15. Stavåke, Kristian, et al. "PDE Modeling with Modelica Via FMI Import of HiFlow3 C++ Components with Parallel Multi-Core Simulations." In Proceedings of the 55th Scandinavian Conference on Simulation and Modeling (SIMS’2014), Aalborg, Denmark, Oct 21-22.. 2014. 40 | 16. Dshabarow, Farid, et al. "Support for Dymola in the modeling and simulation of physical systems with distributed parameters." Proceedings of the 6th International Modelica Conference. 2007. 41 | 17. Šilar, Jan, Filip Ježek, and Jirí Kofránek. "PDEModelica and Breathing in an Avalanche." Proceedings of the 12th International Modelica Conference, Prague, Czech Republic, May 15-17, 2017. No. 132. Linköping University Electronic Press, 2017. 42 | 18. Saldamli, Levon. PDEModelica-Towards a High-Level Language for Modeling with Partial Differential Equations. Diss. Institutionen för datavetenskap, 2002. 43 | 19. Saldamli, Levon. PDEModelica–A High-Level Language for Modeling with Partial Differential Equations. Diss. Institutionen för datavetenskap, 2006. 44 | 45 | ## Presentations: 46 | 1. [Discretizing PDEs for MapleSim - Maplesoft](http://www.maplesoft.com/view.aspx?SF=143063/Discretizing_FutureV.pdf) 47 | 2. [Support for Dymola in the Modeling and Simulation of Physical Systems with Distributed Parameters](https://www.inf.ethz.ch/personal/cellier/MS/dshabarow_ms.ppt) 48 | 3. [Modelica Code Generators - Modelisax](http://www.modelisax.de/wp-content/uploads/2014/05/nicolai_code_generator.pdf) 49 | 4. [Partial Differential Equations in Modelica - ModProd](http://www.modprod.liu.se/openmodelica-2015/1.620221/OpenModelica2015-talk05-PDEInModelica_silar.pdf) 50 | 51 | 52 | ## Posts in forums: 53 | 1. https://www.openmodelica.org/forum/default-topic/147-pde-in-modelica#p8014 54 | 2. https://openmodelica.org/forum/default-topic/1995-solving-modelica-and-a-pde-in-an-external-fea-program-simultaneously 55 | 3. https://openmodelica.org/forum/default-topic/35-describing-domain-pde#p8015 56 | 4. https://openmodelica.org/forum/default-topic/1277-pde-time-step 57 | 5. https://stackoverflow.com/questions/30889076/managing-of-navier-stokes-pdes-by-means-of-sbf-in-dymola 58 | 6. https://www.openmodelica.org/forum/default-topic/1625-spatial-basis-functions-method-for-changing-pde 59 | 7. http://www.jmodelica.org/5924 60 | 8. https://stackoverflow.com/questions/37157904/1d-heat-diffusion-pde-implementation-in-modelicadymola 61 | 9. http://www.jmodelica.org/198 62 | 63 | 64 | #### To be investigated: 65 | 1. strange folder in OpenModelica repository named pde: https://openmodelica.org/svn/OpenModelica/tags/TAG_MATHCORE_ABB_1/ 66 | 2. what is "AxialConduction": https://build.openmodelica.org/Documentation/Modelica.Thermal.HeatTransfer.html 67 | 3. what is this PDElib https://github.com/modelica-3rdparty/PDELib --> related to the publication by Dshabarow 2008 68 | 69 | --------------------------------------------------------------------------------