Error de análisis [¿error?] Con sistemas de PDE no lineales, Mathematica 12.0.0

Aug 18 2020

Error introducido en 12.0 y persistente hasta 12.1.1 - Corregido en la versión: 12.2

Encuentro el siguiente comportamiento usando 12.0.0. (EDITAR: le pedí a un amigo que lo probara en 12.1.1 y encuentra el mismo resultado).

Aquí hay un sistema de PDE no lineales acoplados que NDSolveno pueden analizar (no se preocupe por el sistema en sí, es solo el ejemplo más simple que he encontrado que produce este comportamiento):

c = {{1, 0}, {0, v[x, y]}};
alpha = {0, -u[x, y]};
NDSolveValue[{-Inactive[Div][c.Inactive[Grad][u[x, y], {x, y}], {x, y}] == 0, 
     -Inactive[Div][Inactive[Times][alpha, v[x, y]], {x, y}] ==0}, {u[x, y], v[x, y]}, 
Element[{x, y}, Disk[]]]

La salida es

NDSolveValue :: femper: Error de análisis de PDE de Div [{{1,0}, {0, v}}. Grad $ 9730]. Dimensiones de la ecuación inconsistentes.

Parece una funcionalidad extremadamente básica para ser un error. Quizás me esté perdiendo algo simple. Intenté incluir muchas llamadas para Inactiveque el analizador no tuviera problemas para identificar los coeficientes, que de otro modo podrían ser ambiguos con los sistemas no lineales.

Tenga en cuenta que el análisis no es un problema con un problema lineal similar:

c = {{1, 0}, {0, 1}};
alpha = {0, -1};

Tampoco hay problemas para analizar cuando se reducen las variables dependientes a una dimensión (en {u}lugar de {u,v}), pero manteniéndola no lineal (por ejemplo c1 = {{1, 0}, {0, u[x, y]}}). Entonces, este problema parece deberse a la combinación de estar acoplado y no lineal.

También tenga en cuenta que hay una solución obvia, que es ir por la ruta de "programación FEM" y simplemente especificar los coeficientes pde a través de InitializePDECoefficients. Pero aún así ... ¿qué hay aquí arriba?

Respuestas

user21 Dec 17 2020 at 08:50

Este es un error y se ha corregido en la versión 12.2.

c = {{1, 0}, {0, v[x, y]}};
alpha = {0, -u[x, y]};
NDSolveValue[{-Inactive[Div][
     c . Inactive[Grad][u[x, y], {x, y}], {x, y}] == 
   0, -Inactive[Div][Inactive[Times][alpha, v[x, y]], {x, y}] == 
   0}, {u[x, y], v[x, y]}, Element[{x, y}, Disk[]]]

Recibirá una advertencia esperada sobre las condiciones de límite que faltan, pero aparte de eso, devuelve una solución.

NamNguyen Nov 03 2020 at 18:57

Tengo el mismo error con NDSolve. Para Mathematica 11, funciona. Pero el mismo cuaderno se ejecuta en Mathematica 12.0, produce:

NDSolveValue::ndnum: Encountered non-numerical value for a derivative at t == 0.`.



In[2]:= $Version

Out[2]= "12.0.0 for Microsoft Windows (64-bit) (April 6, 2019)"