Paso 4 — Dar memoria al programa con arrays
Queremos probar cuatro alturas sin crear cuatro parámetros independientes:
*DIM,heights,ARRAY,4
heights(1)=0.08
heights(2)=0.10
heights(3)=0.12
heights(4)=0.14
*DIM reserva un array. Cada posición contiene una alternativa. El array describe datos;
todavía no indica qué hacer con ellos.
Paso 5 — Recorrer alternativas con *DO
*DO,i,1,4
trial_h=heights(i)
trial_i=beam_b*trial_h**3/12
trial_uy=ABS(tip_force)*beam_l**3/(3*young*trial_i)
trial_stress=ABS(tip_force)*beam_l*(trial_h/2)/trial_i
*ENDDO
El índice i toma sucesivamente los valores 1, 2, 3 y 4. En cada vuelta,
trial_h representa una altura distinta. El cálculo analítico cuesta prácticamente nada;
por eso es un buen lugar para aprender bucles. Ejecutar una simulación completa en cada vuelta llegará en M09.
Paso 6 — Convertir límites en una decisión
passes=0
*IF,trial_uy,LE,uy_limit,THEN
*IF,trial_stress,LE,stress_limit,THEN
passes=1
*IF,selected_h,EQ,0,THEN
selected_h=trial_h
*ENDIF
*ENDIF
*ENDIF
selected_h comienza en cero. Solo se actualiza para la primera alternativa válida,
por lo que al finalizar contiene la menor altura admisible de un array ordenado.
| Altura | Flecha | Tensión | Estado |
|---|---|---|---|
| 80 mm | 0,744 mm | 18,75 MPa | No cumple flecha |
| 100 mm | 0,381 mm | 12,00 MPa | No cumple flecha |
| 120 mm | 0,220 mm | 8,33 MPa | Cumple |
| 140 mm | 0,139 mm | 6,12 MPa | Cumple |
La primera candidata válida es 120 mm.
Paso 7 — Escribir una evidencia reutilizable
Una tabla es más útil que valores enterrados en el output:
*CFOPEN,m01_design_table,csv
*VWRITE
('height_m,uy_ref_m,sigma_ref_pa,passes')
! Dentro del bucle:
*VWRITE,trial_h,trial_uy,trial_stress,passes
(E16.8,',',E16.8,',',E16.8,',',F2.0)
*CFCLOS
Al ejecutar el entregable aparecerá m01_design_table.csv en el Working Directory.
Ábrelo en un editor de texto antes de llevarlo a una hoja de cálculo: debes poder entender su estructura sin depender de otra aplicación.