|
| |
Soporte al Usuario de COSMOS/ -- Nota
Técnica Nº G17
Macros de Usuario para Geostar
Productos: COSMOS/M GEOSTAR
Versión: Todas las Versiones
Categoría: Preprocesado
Ultima revisión: Diciembre-2003
Las siguientes Macros son un ejemplo de la total
automatización que se puede realizar con GEOSTAR. Si tienes una Macro interesante
y la quieres compartir con el resto de usuarios de GEOSTAR envíanosla y encantados la
publicaremos en esta página. Para utilizar las macros simplemente copiar y pegar
el texto de la macro en un fichero creado con el Block de Notas y leer la macro en GEOSTAR
con la orden FILE.
1. Creación Automática de Puntos (PT) en Nodos:
Esta Macro utiliza la orden PTND
para crear automáticamente un Punto (PT) en la posición de cada uno de los nodos
incluidos en una selección. Esta macro se creó en su día porque necesitaba generar
elementos TRUSS3D a partir de una selección de nodos. Lo más sencillo
es colocar un PT en cada nodo y a continuación generar curvas por extrusión con la orden
CREXTR y finalmente mallar las curvas con elementos TRUSS3D con la orden M_CR
...
C*
C* Esta MACRO crea automáticamente PTs en una selección de nodos.
C*
C* Pasos a seguir:
C* 1. Incluir los nodes en un Set de Selección
C* (usar SELWIN, SELREF, etc..).
C* 2. Grabar la macro en el directorio de trabajo como "macro_pt2nd.GEO".
C* 3. Ejecutar la macro con "FILE,macro_pt2nd.GEO".
C*
PARASSIGN,i,INT,1
#LOOP ENDLABEL NDMAX
#IF (LISTSEL(ND|i))
PTND,,i
#ENDIF
PARASSIGN,i,INT,i+1
#LABEL ENDLABEL |
2. Definición Automática de Grados de Libertad Acoplados (CPDOF):
La siguiente Macro utiliza la orden CPDOF
para acoplar automáticamente Grados de Libertad de Desplazamiento de Translación o
Rotación (UX, UY, UZ, RX, RY, RZ) o Temperatura (TEMP) entre un nodo "maestro"
y los nodos incluidos en un Set de Selección activo. La macro crea un set por cada GDL y
por cada uno de los nodos de la selección. Para asignar más GDL a cada nodo simplemente
editar la macro y modificar el Grado de Libertad que se desee y ejecutar de nuevo la
Macro. Al finalizar ejecutar la orden CPDOFLIST para listar todos los Grados de Liberta
acoplados.
C*****
C***** Esta MACRO crea automáticamente Grados de Libertad acoplados entre nodos.
C***** Nótese que el máximo nº de sets de acoplamiento soportados por CPDOF en
C***** "Geostar 64K" es de 10.000 sets.
C*****
C*****
C***** Pasos a seguir:
C***** 1. Incluir TODOS los nodes a acoplar en un Set de
Selección
C***** (usar SELWIN, SELREF, etc..).
C***** 2. Asignar a la variable "MASTER" el nº del nodo
maestro.
C***** 3. En la orden CPDOF editar el GDL a acoplar (UX, UY, UZ, RX,
RY, TZ, TEMP).
C***** 4. Grabar el fichero en el directorio de trabajo como "macro_cpdof.GEO".
C***** 5. Ejecutar la macro con "FILE,macro_cpdof.GEO".
C*****
C***** Asignar el nº del nodo maestro a la variable "MASTER".
C*****
PARASSIGN,MASTER,INT,xx
PARASSIGN,ICOUNT,INT,1
#LOOP ENDLABEL NDMAX
#IF (LISTSEL(ND|ICOUNT) && ICOUNT != MASTER)
C*****
C***** Definir el GDL a acoplar
C*****
CPDOF,,UX,2,MASTER,ICOUNT
#ENDIF
PARASSIGN,ICOUNT,INT,ICOUNT+1
#LABEL ENDLABEL |
3. Mover un grupo de nodos radialmente alrededor de un eje:
Esta macro utiliza la orden NMODIFY
para modificar las coordenadas de TODOS los nodos incluidos en una selección moviéndolos
de forma relativa desde su posición actual a una nueva posición definida en coordenadas
cilíndricas modificando automáticamente el valor de la coordenada-X (es decir, el radio)
de cada nodo.
Las siguientes imágenes muestran el funcionamiento de la
Macro: primero se crea una selección de nodos. A continuación se define un sistema de
coordenadas cilíndricas con el eje-X (radio) orientado correctamente. Y por último se
edita la macro definiendo los valores CSYS y RADIUS con la etiqueta del sistema de
coordenadas cilíndrico y la distancia (es deicr, el radio) a la que se desea queden todos
los nodos situados respecto al eje-Z local:

Modelo original antes de ejecutar la
Macro

Estado del Modelo tras ejecutar la Macro
C*----------------------------------------------------------------
C* This macro force selected nodes to be exactly located at a
C* specified distance from an axis.
The nodes should be
C* selected and the selection set
activated prior to running
C* this macro. Also, the proper
cylindrical coordinate system
C* should have been defined and
activated
C*
C* Created: March 20, 2003
C* by: Joerg Martienssen
C* Last revised: March 20, 2003
C* by: Julien Boissat
C*----------------------------------------------------------------
PARASSIGN,CSYS,INT,XX; C* Definir el
sistema de Coordenadas Cilíndricas.
PARASSIGN,RADIUS,REAL,XX; C* Definir la distancia (el Radio) donde se moverán los nodos.
PARASSIGN,K,INT,0,
#LOOP LP1 NDMAX
PARASSIGN,K,int,K+1,
#if (EXIST(ND|k) && listsel(ND|k))
NMODIFY,k,k,1,0,radius,YND(k|csys),ZND(k|csys),csys
#endif
#LABEL LP1 |
4. Cálculo de la Energía Total de Deformación de un grupo de elementos:
Esta Macro calcula la Energía Total
de Deformación Unitaria así como la Densidad de
Energía de Deformación Unitaria y el Volumen de la selección
de elementos activa. Aunque el valor de la Energía Total de Deformación Unitaria aparece
escrito al final del fichero .OUT, es interesante disponer de esta macro como herramienta
alternativa en caso de tener que calcular la energía total de deformación de unos pocos
elementos en vez del modelo completo.
C*----------------------------------------------------------------
C* Compute total strain energy of elements for load case 1
C* in selected elements.
C* Created by: Ruben Bons
C*----------------------------------------------------------------
PARASSIGN,STRENERGY,REAL,0
PARASSIGN,i,INT,0
#loop lp1 elmax
PARASSIGN,i,INT,i+1
#if ( EXIST(EL|I) && LISTSEL(EL|I) )
PARASSIGN,VOL,REAL,Volume(I)
PARASSIGN,STRDENS,REAL,SED(1|I)
PARASSIGN,STRENERGY,REAL,(Strenergy + (Vol*Strdens))
#endif
#label lp1 |
|