Componente mecánico: muelle
El siguiente archivo, spring.ssc
, implementa un componente denominado spring
.
La sección de la declaración del componente incluye:
Dos nodos rotacionales,
r
yc
(para la varilla y la carcasa, respectivamente).Parámetro
k
, con un valor predeterminado de10 N*m/rad
, que especifica la tasa de elasticidad del muelle.Variables Through y Across, el par motor
t
y la velocidad angularw
, que se van a conectar a las variables Through y Across del dominio de rotación más adelante en el archivo.Variable interna
theta
, con un valor predeterminado de0 rad
, que especifica el ángulo relativo, es decir, la deformación del muelle.
La sección branches
establece la relación entre la variable Through del componente y los nodos del componente (y, por lo tanto, de la variable Through del dominio). La instrucción t : r.t -> c.t
indica que el par motor a través del muelle actúa desde el nodo r
hasta el nodo c
.
La sección de ecuaciones comienza con un constructo assert
, que comprueba que la tasa de elasticidad del muelle es mayor que cero. Si el parámetro de bloque está establecido de manera incorrecta, assert
se genera un error en tiempo de ejecución.
La primera ecuación, w == r.w - c.w
, establece la relación entre la variable Across del componente y los nodos del componente (y, por lo tanto, la variable Across del dominio). Define la velocidad angular a lo largo del muelle como la diferencia entre las velocidades angulares de los nodos.
Las dos ecuaciones siguientes definen la acción del muelle:
t = k * theta
, es decir, el par motor es igual a la tasa de elasticidad del muelle por la deformación del muelle.w = theta.der
, es decir, la velocidad angular es igual a la derivada de tiempo de la deformación del muelle.
component spring nodes r = foundation.mechanical.rotational.rotational; c = foundation.mechanical.rotational.rotational; end parameters k = { 10, 'N*m/rad' }; end variables theta = { 0, 'rad' }; t = { 0, 'N*m' }; % torque through w = { 0, 'rad/s' }; % velocity across end branches t : r.t -> c.t; % torque through from node r to node c end equations assert(k>0) % spring rate must be greater than zero w == r.w - c.w; % velocity across between node r and node c t == k * theta; w == theta.der; end end