Stella O Stella é um ambiente hierárquico, multi-nível para construir e interagir com modelos. Este ambiente possui 2 niveis principais: O nível mais alto de mapping e input/output e o nível de construção dos modelos. A divisão em níveis facilita o desenvolvimento “top-down” dos modelos e a construção da interface, permitindo um acesso com mais ou menos detalhe do modelo. Cada janela corresponde a um nível diferente: Mapping layer Modeling layer Equation view Menus Mapping layer File Edit Map&I/O Run Help Só pode estar aberto um modelo de cada vez. File – Save As PICT... Text... Movie... Context sensitive menu. File – Revert O modelo volta ao estado em que estava após a última vez que foi gravado. Map&I/O - Open selection... Define Graph... Define Table... Define Movie... Equivalente a um “double click”. Map&I/O- Prefs... Permite definir as características visuais de cada nível (neste caso do Mapping). Run - Sector Specs... Permite dividir o modelo em sectores que podem correr separadamente. Run - Sensis Specs... Permite estabelecer características para a análise de sensibilidade. Run - Time Specs... Permite especificar: - duração da simulação, - “time step” da simulação(tem que ser <=1), - intervalo da pausa (por defeito infinito), permite parar a simulção para analisar os resultados. Para continuar Run, - método de integração - run mode Run - Range Specs... Permite definir a escala para cada variável do modelo. Modeling layer File Edit Diagram Run Help Equations Run Help Equation view File Edit Blocos de construção (Building blocks) Mapping layer Process frame Representa processos de alto nível, que são decompostos e detalhados no nível abaixo (modeling). Bundled flow Representa, a alto nível, os dados que fluem entre os processos do modelo. Bundled connector Representa, a alto nível, qualquer connector entre sectores existentes no modelo. Modeling layer Stocks São acumuladores. Coleccionam tudo o que flui para dentro e para fora deles. São como um reservatório de água que passivamente acumula o seu fluxo de entrada menos os fluxo de saída. Tipos: reservatório (por defeito), conveyor (tapete rolante, tempo de trânsito), fila (queue FIFO) e oven (vai enchendo, processa (cozinha) e vaza de uma só vez, só é permitido um uniflow). Convém definir um valor inicial. Flows (fluxos) Funciona como um pipe (cano). Uniflow flui numa só direcção, por isso o volume terá sempre valores não negativos. Unit conversion é importante quando se pretende modelar processos de assemblação em que a matéria prima é transformada no produto final. Converters Guarda valores de constantes, define inputs externos ao modelo, calcula relações algébricas e serve de repositório para funções gráficas. Em geral, converte inputs em outputs. Connectors Permite ligar elementos do modelo. Nunca se pode ligar um “connector” para um “stock”. A única maneira de alterar a magnitude de um “stock” é através de um “flow”. Tools Hand Selecionar, mover, abrir ou editar os blocos de construção de um modelo. Paintbrush Adicionar cor a um modelo. Dynamite Apagar elementos do modelo. Atenção que não há Undo. Ghost (Modeling layer) Para fazer réplicas ou aliases individuais de stocks, flows e converters. Só está disponível no diagrama do “model construction layer”. Quando se abre um ghost a dialog box que aparece pertence ao original a partir do qual foi feita a réplica. É importante apenas para fins cosméticos, para facilitar a compreensão do modelo ou juntar um determinado conjunto de variáveis num local de modo a mais facilmente as alterar. Objects Text Block Permite criar blocos de texto. Graph Pad É um repositório para mostrar dados resultantes das simulações. Tipos de gráficos: - Series temporais – conjunto de variáveis ao longo do tempo (até 5 variáveis); - Scatter – mostra o valor de uma variável em cada um dos eixos. Table Pad Para mostrar os resultados numéricos das simulações. Numeric Display (Modeling layer) Para mostrar o output corrente associado a variáveis do modelo. É importante para saber o que vai acontecendo à medida que a simulação corre. Sector Frame (Modeling layer) Tem 2 funcões principais: - agrupar elementos do modelo relacionados funcionalmente; - mostrar imagens. Space Compression (Modeling layer) É um mecanismo para gerir a complexidade dos diagramas. Permite comprimir o espaço associado ao detalhe lógico do modelo. O espaço pode ser selectivamente mostrado no diagrama, ou escondido. Exemplos Crecimento populacional População(t) = População(t - dt) + (Nascimentos - mortes) * dt INIT População = 100 INFLOWS: Nascimentos = 8 OUTFLOWS: mortes = 4 Crescimento = Nascimentos-mortes 1ª Lei de Newton O “stock” posição diz-nos, em qualquer momento, onde o objecto está, relativamente a um ponto inicial. Ele acumula velocidade, a taxa de movimento do objecto. Por exemplo, se viajarmos a 60 km/h, em duas horas teremos viajado 120 km. A velocidade é “biflow”, isto reflete a ideia de que a velocidade possui magnitude e direcção. Se depois de percorridos 120 Km, voltarmos para trás e viajarmos durante 2 horas a 60 km/h, voltamos ao ponto de partida. O momento, um “stock”, é mais súbtil. Newton descreve-o como quantidade de movimento. Ele vê o momento como uma acumulação de qualquer força aplicada a um objecto. A força, o fluxo associado ao momento, é representada por um “biflow”. Tal como a velocidade, a força tem uma magnitude e uma direcção. Quanto menor for a massa de um objecto, maior será a velocidade que adquirirá. Imaginemos que um astronauta decide dar um passeio pelo espaço. Sai da sua nave e inadvertidamente empurra-se para longe da nave. Vamos fazer a simulação correspondente. 1Lei_Newton Momento(t) = Momento(t - dt) + (Força) * dt INIT Momento = 10 Reflecte o empurrão INFLOWS: Força = 0 Posição(t) = Posição(t - dt) + (Velocidade) * dt INIT Posição = 0 Distância do astronauta à nave INFLOWS: Velocidade = Momento/Massa Massa = 75 1ª Lei de Newtom Qualquer corpo mantém o seu estado de repouso ou movimento rectilíneo uniforme, a não ser que seja compelido a mudar esse estado por alguma força que lhe seja aplicada. Ao fim de 1 minuto, o astronauta estará a 8m da nave. Como o momento é constante ele continuará em movimento para sempre. Run – Time Specs – Minutos Run 2ª Lei de Newton Imaginemos agora que estamos na Terra. Descobrimos que os nossos movimentos dependem de uma série de forças que nos são aplicadas. Temos, por exemplo, a força da gravidade. A 2ª lei de Newton descreve como funcionam as forças. A força depende da massa e da aceleração: F=m*a Momentum(t) = Momentum(t - dt) + (force) * dt INIT Momentum = 0 INFLOWS: force = mass*acceleration DOCUMENT: F = ma isn't just a good idea. It's the law! Position(t) = Position(t - dt) + (velocity) * dt INIT Position = 100 INFLOWS: velocity = Momentum/mass acceleration = -9.8 mass = 75