Recordamos que en esta otra clase ya aprendimos como hacer si tenemos una estructura mallada en ANSYS y, por el motivo que sea, necesitamos saber el área total de cierta parte de la estructura. En esta clase, esta vez, aprenderemos el código que nos va a permitir calcular la masa total de estos elementos seleccionados. Para ello diferenciaremos entre calcular la masa para elementos Mass21 o si queremos calcular la masa para otros elementos Shell, como Shell43 o Shell181. Para obtener la masa de nuestros elementos necesitamos aprender a usar *GET de distintas maneras:
· Para obtener el REAL – Espesor(Shell43) o Masa directamente (Mass21) (Ver punto 1 más adelante)
· Para obtener el tipo de sección SECTYPE – Lo usaremos para el espesor del elemento Shell181 (Ver punto 2 más adelante)
· Para obtener la DENSIDAD (Ver punto 3 más adelante)
· Para obtener el AREA: Esto ya lo vimos en esta otra clase que recomendamos
A continuación vamos a explicar las distintas líneas de comandos y vamos a mostrar cómo, combinadas con un bucle, pueden darnos la masa total que buscamos:
· Masa de los elementos Shell43 y de los Shell181 (Ver punto 5 y 6 más adelante)
· Masa de los elementos Mass21 (Ver punto 7 más adelante)
Una vez que hemos calculado esta masa podríamos, por ejemplo, escribirla en un txt. Para ello recomendamos leer esta otra clase “Aprendiendo ANSYS-Escribir resultados o variables en un archivo .txt”.
Para esta clase vamos a suponer que tenemos seleccionados ya los elementos de los que queremos conocer su masa total.
1) Obtener el número de REAL y su valor asociado
Ejemplo de código de ANSYS
Aprender a usar las líneas de comando
*GET, Nombre_variable_1,elem, num_elem,attr,real !Esta línea guarda en la variable “Nombre_variable_1” el real del elemento número “num_elem”. Estamos aplicando *GET a la entidad “elemento (elem)” y le pedimos el “atributo (attr)” tipo “real”. “num_elem” puede ser el número de cualquier elemento del modelo
* GET, Nombre_variable_2,rcon, Nombre_variable_1,const,1 !Esta línea guarda en la variable “Nombre_variable_2” el valor asociado al real número “Nombre_variable_1” que hemos obtenido en la línea anterior. Estamos aplicando *GET a la entidad “rcon” y le pedimos la “constante (const)”. La parte const,1 hace referencia a que, dentro del real del elemento, que puede tener varios valores, queremos el primero. Tanto para Mass21 como Shell43/181, queremos el primer valor, ya que para Mass21 el primer valor del real es la masa y para Shell43/181 es el espesor del elemento. “num_elem” puede ser el número de cualquier elemento del modelo
2) Obtener el número de sección (SECTYPE) y el valor de espesor asociado para Shell181 (para Shell181 de una sola capa)
Ejemplo de código de ANSYS
Aprender a usar la línea de comando
*GET, Nombre_variable_1,elem, num_elem,attr,secn !Esta línea guarda en la variable “Nombre_variable_1” el número de la sección del elemento número “num_elem”. Estamos aplicando *GET a la entidad “elemento (elem)” y le pedimos el “atributo (attr)” tipo “sección (secn)”. “num_elem” puede ser el número de cualquier elemento del modelo
*GET, Nombre_variable_2,SHEL, Nombre_variable_1,PROP,TTHK !Esta línea guarda en la variable “Nombre_variable_2” el valor del espesor asociado al elemento Shell (shell181) con número de sección igual a “Nombre_variable_1” que hemos obtenido en la línea anterior. Estamos aplicando *GET a la entidad “shel” (que es para elementos Shell) y le pedimos la propiedad (Prop) espesor (TTHK). “num_elem” puede ser el número de cualquier elemento del modelo
3) Obtener la densidad
Ejemplo de código de ANSYS
Aprender a usar la línea de comando
*GET, Nombre_variable_1,elem, num_elem,attr,mat !Esta línea guarda en la variable “Nombre_variable_1” el material del elemento número “num_elem”. Estamos aplicando *GET a la entidad “elemento (elem)” y le pedimos el “atributo (attr)” tipo “material (mat)”. “num_elem” puede ser el número de cualquier elemento del modelo
*GET, Nombre_variable_2,dens, Nombre_variable_1,TEMP,0 !Esta línea guarda en la variable “Nombre_variable_2” el valor de la densidad asociado al elemento con número de material igual a “Nombre_variable_1” que hemos obtenido en la línea anterior. Estamos aplicando *GET a la entidad “dens” (que es una de las posibles opciones dentro de MPLAB). El valor de TEMP,0 se especifica porque puede que haya distintas densidades en función de la temperatura. Por defecto las densidades se definen a T=0. “num_elem” puede ser el número de cualquier elemento del modelo
4) Obtener el area
Esto ya lo vimos en esta otra clase que recomendamos leer para entender el ejemplo que viene a continuación
5) Calcular la masa total en elementos Shell43
*GET,nbr_elem,elem,0,count !Con esta línea vamos a contar el número de elementos que están seleccionados y vamos a guardar el número en la variable nbr_elem
mass_total=0 !Iniciamos la variable que posteriormente usaremos para guardar el valor de la masa total
*do,a,1,nbr_elem !Hacemos un bucle que recorrerá todos los elementos seleccionados. Es un bucle que va desde 1 hasta nbr_elem que es el nombre de la variable que contiene el número de elementos seleccionados
*GET,nummx,elem,0,num,max !Guardamos en la variable “nummx” el número del elemento que tiene el número más alto entre los elementos seleccionados
*GET,area_elem,elem,nummx,area !Guardamos en la variable “area_elem” el valor del área del elemento que tiene el número “nummx” guardado antes
*GET,num_real,elem,nummx,attr,real !Guardamos en la variable “num_real” el valor del real del elemento que tiene el número “nummx” guardado antes
*GET,thick_elem,rcon,num_real,const,1 !Guardamos en la variable “thick_elem” el valor asociado al real número “num_real” guardado antes. En este caso, este real significa el espesor del elemento shell
*GET,num_mat,elem,nummx,attr,mat !Guardamos en la variable “num_mat” el valor del material del elemento que tiene el número “nummx” guardado antes
*GET,dens_elem,dens,num_mat,TEMP,0 !Guardamos en la variable “dens_elem” el valor de la densidad asociado al material número “num_mat” guardado antes.
mass_elem=area_elem*dens_elem*thick_elem !Multiplicamos los tres valores obtenido anteriormente para calcular la masa del elemento que tiene por número “nummx” que hemos cogido al principio del bucle
Mass_total= Mass_total + mass_elem !Aquí sumamos a la variable “Mass_total” el valor calculado. Por eso hemos definido al principio, fuera del bucle, Mass_total =0
ESEL,u,elem,,nummx !Deseleccionamos el elemento que tiene por número “nummx”. Con esto conseguimos que la selección sea la inicial menos el elemento cuya masa ha sido calculada en este paso del bucle
*enddo !Recomenzamos el bucle, ahora la sección ya no contendrá el elemento del que hemos obtenido su masa, y la variable Masa_total ya contará con la masa de este elemento. Al final de todo el bucle, no quedará nada seleccionado y “Masa_total” tendrá la masa total de la selección inicial.
6) Calcular la masa total en elementos Shell181
IMPORTANTE: En este ejemplo se supone que la densidad del material está definido mediante el comando MAT y no en SECTYPE y que el elemento tiene una sola capa. En caso contrario estas líneas no podrán aplicarse. Recomendamos leer la clase “Aprendiendo ANSYS- Crear elementos Shell 181” para entender cómo podemos crear elementos Shell181 y por qué recalcamos la importancia de como se ha asignado el material al elemento
*GET,nbr_elem,elem,0,count !Con esta línea vamos a contar el número de elementos que están seleccionados y vamos a guardar el número en la variable nbr_elem
mass_total=0 !Iniciamos la variable que posteriormente usaremos para guardar el valor de la masa total
*do,a,1,nbr_elem !Hacemos un bucle que recorrerá todos los elementos seleccionados. Es un bucle que va desde 1 hasta nbr_elem que es el nombre de la variable que contiene el número de elementos seleccionados
*GET,nummx,elem,0,num,max !Guardamos en la variable “nummx” el número del elemento que tiene el número más alto entre los elementos seleccionados
*GET,area_elem,elem,nummx,area !Guardamos en la variable “area_elem” el valor del área del elemento que tiene el número “nummx” guardado antes
*GET, num_seccion,elem, nummx,attr,secn !Guardamos en la variable “num_seccion” el valor del real del elemento que tiene el número “nummx” guardado antes
*GET, thick_elem,SHEL, num_seccion,PROP,TTHK !Guardamos en la variable “thick_elem” el valor asociado a la sección número “num_seccion” guardado antes.
*GET,num_mat,elem,nummx,attr,mat !Guardamos en la variable “num_mat” el valor del material del elemento que tiene el número “nummx” guardado antes
*GET,dens_elem,dens,num_mat,TEMP,0 !Guardamos en la variable “dens_elem” el valor de la densidad asociado al material número “num_mat” guardado antes.
mass_elem=area_elem*dens_elem*thick_elem !Multiplicamos los tres valores obtenido anteriormente para calcular la masa del elemento que tiene por número “nummx” que hemos cogido al principio del bucle
Mass_total= Mass_total + mass_elem !Aquí sumamos a la variable “Mass_total” el valor calculado. Por eso hemos definido al principio, fuera del bucle, Mass_total =0
ESEL,u,elem,,nummx !Deseleccionamos el elemento que tiene por número “nummx”. Con esto conseguimos que la selección sea la inicial menos el elemento cuya masa ha sido calculada en este paso del bucle
*enddo !Recomenzamos el bucle, ahora la sección ya no contendrá el elemento del que hemos obtenido su masa, y la variable Masa_total ya contará con la masa de este elemento. Al final de todo el bucle, no quedará nada seleccionado y “Masa_total” tendrá la masa total de la selección inicial.
7) Calcular la masa total en elementos Mass21
Este ejemplo es mucho más sencillo que el anterior ya que la masa de los elementos Mass21 se encuentra directamente definida en el real del elemento. El bucle será semejante al anterior pero solo nos interesará la parte del REAL. Se supone para este ejemplo que tenemos seleccionado ya solo elementos Mass21.
*GET,nbr_elem,elem,0,count !Con esta línea vamos a contar el número de elementos que están seleccionados y vamos a guardar el número en la variable nbr_elem
mass_total=0 !Iniciamos la variable que posteriormente usaremos para guardar el valor de la masa total
*DO,a,1,nbr_elem !Hacemos un bucle que recorrerá todos los elementos seleccionados. Es un bucle que va desde 1 hasta nbr_elem que es el nombre de la variable que contiene el número de elementos seleccionados
*GET,num_real,elem,nummx,attr,real !Guardamos en la variable “num_real” el valor del real del elemento que tiene el número “nummx” guardado antes
*GET,Mass_elem,rcon,num_real,const,1 !Guardamos en la variable “Mass_elem” el valor asociado al real número “num_real” guardado antes. En este caso, este real significa la masa del elemento Mass21
Mass_total= Mass_total + Mass_elem !Aquí sumamos a la variable “Mass_total” el valor calculado. Por eso hemos definido al principio, fuera del bucle, Mass_total =0
esel,u,elem,,nummx !Deseleccionamos el elemento que tiene por número “nummx”. Con esto conseguimos que la selección sea la inicial menos el elemento cuya masa ha sido calculada en este paso del bucle
*enddo !Recomenzamos el bucle, ahora la sección ya no contendrá el elemento del que hemos obtenido su masa, y la variable Mass_total ya contará con la masa de este elemento. Al final de todo el bucle, no quedará nada seleccionado y “Mass_total” tendrá el área total de la selección inicial.