Solve_ivp-Anfangsbedingung für 2D-Problem/Problem eingerichtetPython

Python-Programme
Guest
 Solve_ivp-Anfangsbedingung für 2D-Problem/Problem eingerichtet

Post by Guest »

Ich versuche also, ein Projekt aus dem Numerical Methods-Kurs des MIT zu lösen. Im Grunde muss ich eine jetzt entkoppelte Gleichung für die Überschallströmung über einem Tragflächenprofil lösen, das nur eine parabolische Form hat. Aber aus irgendeinem Grund schaffe ich es nicht, dass es funktioniert. fühle mich sehr dumm. Hier ist das Projekt: https://learning-modules.mit.edu/servic ... nload=true< /p>
Im Grunde habe ich also ein 100x200-Netz und Sie müssen an jedem Knoten eine PDE (jetzt zwei ODE) lösen. In den MIT-Vorlesungen kombinieren sie tatsächlich eine Finite-Differenzen-Matrix für den räumlichen Teil (also lösen sie tatsächlich mit Finite-Differenzen), aber die Zeit wird mit Matlab ODE45 gelöst. Ich verwende Python, da es jetzt am häufigsten verwendet wird.
Ich habe also eine parabolische Form und habe an jedem Punkt einen anderen y-Wert. Es sollten also 100 ODEs vorhanden sein, die jeweils ein Jahr darstellen. Und ich habe 2 ODEs, also eine Form von (2.100), aber wenn ich die Anfangsbedingung einrichte, wenn ich ein Array mit einer Form (2.100) einrichte, muss es eindimensional sein, aber wenn ich es reduziere, heißt es, dass die Form nicht übereinstimmt. Was muss ich tun, damit es passt?

Code: Select all

import numpy as np
import itertools
import matplotlib.pyplot as plt
from scipy.integrate import solve_ivp

## General Variables
N=100
r = np.linspace(0, 1, N)
s = np.linspace(-1, 1, N*2)
R, S = np.meshgrid(r, s)
y_max = 1
y_min = -1
y_upper = 0.1*r-0.1*r**2
y_lower = -0.1*r+0.1*r**2

Mach = 2 #given in problem

## Equation to solve def
def SSonicFlowFun(t, P):
phix = P[0]
phiy = P[1]
dpxdt =(y_max/(y_max-y_upper))/(1-Mach**2) *phiy
dpydt = (y_max/(y_max-y_upper))*phix
return np.array([dpxdt, dpydt])

t_span = (0, 1)
Phi0 = np.zeros((2, 100))
print(Phi0.shape)

## Solving ODE
sol= solve_ivp(SSonicFlowFun, t_span, Phi0)
Ich habe die endliche Differenz eliminiert, weil sie mich aus der Fassung bringt. Ich bin immer noch nicht sicher, wie ich sie integrieren soll, also werde ich das als nächstes versuchen, aber dasolve_ivp auch den Raum löst, sollte es theoretisch die gleiche richtige Antwort geben ? Tut mir leid, dass ich nur versuche, es zu lernen, und alles hier kann Sinn machen oder auch nicht, also korrigieren Sie mich bitte.
Ihre Hilfe wird geschätzt
Ich habe versucht, den Ausgangszustand zu reduzieren aber es heißt, ich brauche eine (2.100)-Form, aber wenn ich die (2.100)-Form verwende, sagt es mir, dass die Anfangsbedingung eindimensional sein muss.
Wenn ich nach einem Single auflöse ODE (Form 1.100) es Funktioniert problemlos...

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post