es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible establecer el nombre de un submodelo como el valor de otra variable en Modelica?

Soy un traductor de español que traduce documentos de tecnología de la información. Traduzca lo siguiente al español. No traduzca el código y el resultado en markdown.

Soy bastante novato en el lenguaje Modelica y agradecería cualquier ayuda sobre este problema simple. Me gustaría saber si es posible escribir el nombre de las variables (que dependen de un submodelo) como una función de otra variable para acortar el código general. Aquí hay un ejemplo de lo que me gustaría hacer.

Estoy considerando un modelo de nivel superior que incluye tres submodelos idénticos (OpenTank) de la Biblioteca Estándar de Modelica (tank1, tank2 y tank3). Me gustaría saber si es posible llamar a la variable (“level”) dentro de los submodelos desde el modelo de nivel superior usando un bucle de esta manera (se adjunta código de ejemplo) o algo similar en lugar de repetir el código tres veces (estoy realmente interesado en configurar esta operación en el modelo de nivel superior)

¿Qué me aconsejaría hacer? ¡Gracias de antemano!

modelo tresTanques
  Modelica.Fluid.Vessels.OpenTank tank1;
  Modelica.Fluid.Vessels.OpenTank tank2;
  Modelica.Fluid.Vessels.OpenTank tank3;
ecuación
  para i en 1:3 loop
    tank(i).level= /* ... */;
  end for;
end tresTanques;
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible llamar a una variable dentro de un submodelo desde el modelo de nivel superior utilizando un bucle. En su ejemplo, puede lograr esto utilizando una matriz de submodelos en lugar de definir cada submodelo individualmente. Aquí hay un ejemplo de cómo puede modificar su código:

    modelo tresTanques
      Modelica.Fluid.Vessels.OpenTank tanques[3];
    ecuación
      for i in 1:3 loop
        tanques[i].nivel = /* ... */;
      end for;
    end tresTanques;
    

    En esta versión modificada, los submodelos están declarados como una matriz, y puede iterar sobre la matriz para acceder a la variable nivel de cada submodelo. De esta manera, solo necesita escribir el bucle una vez en lugar de repetir el código para cada submodelo.

Comments are closed.