2017-02-25 2 views
2

J'ai besoin d'un peu d'aide pour initialiser des tableaux dans openmodelica. J'ai créé une classe modelica qui devrait générer un tableau avec une taille variable. La taille doit être définie en tant que paramètre et est de type entier. Voici un exemple de ce que je veux faire. Je continue à recevoir des messages d'erreur et je serais ravi de recevoir des conseils! Merci.initialisation tableau avec une taille inconnue dans modelica

parameter Integer f_min; 
parameter Integer f_max; 
Integer Freq_steigerung; 
Integer array_size; 
Integer Freq[:]; 

equation 
array_size = ceil((f_max-f_min)/Freq_steigerung); 
Freq[array_size] = f_min: Freq_steigerung: f_max; 

Répondre

4

Vous ne pouvez pas avoir des tableaux de taille variable à l'exécution dans Modelica. Toutes les tailles de tableau doivent être connues au moment de la compilation, donc les tailles doivent être des paramètres ou des constantes.

Vous pouvez avoir des fonctions (ou des enregistrements) contenant des composants avec des tailles de tableaux inconnues, mais ils doivent être liés au moment de l'appel (donc toujours connus pendant la compilation).

Quelque chose comme ça fonctionne:

model T 
    parameter Integer f_min; 
    parameter Integer f_max; 
    parameter Integer Freq_steigerung; 
    parameter Integer array_size = integer(ceil((f_max-f_min)/Freq_steigerung)); 
    Integer Freq[array_size]; 
equation 
    Freq = f_min: Freq_steigerung: f_max; 
end T; 
+1

Cela fonctionne. En fait, l'initialisation hors de l'équation fonctionne également. – Gladson

0

Voici une réponse liée concernant la taille des tableaux inconnus qui est applicable lors de l'utilisation functions.

La commande size peut être utilisée lorsque la taille du tableau d'origine est inconnue, mais les variables requièrent cette information pour être instanciées. Cette utilisation est illustrée ci-dessous.

function test 
    input Real[:] x1; 
    input Real[size(x1,1)] x2; 

    output Real[size(x1,1)] y; 
algorithm 
    y = x1.*x2; 
end test;