Page 3 - Demo
P. 3
Planar Truss Example for Comrel Add-on RCP Consult, 2023-2025 Page 3The first set of statements from FLIM(1) to DEFFUNC(1) operate with procedure PlanarTruss implemented in FortranPlanarTrussGFOR.sao as export function that definition placed in source file PlanarTruss_GF.for written in the fixed format. In this source file the values from global vector v_XP_ and global names will be accessed. Note the large 2nd part of the source to create various plots after the line !!* Visualization.!! Code based on Max Ehre work - https://github.com/maxehre/polynomial_surrogates!! Used with his kind permission as version from 2017 that adapted to Strurel. real*8 function PlanarTruss(ier) * bind(C,name='PlanarTruss') implicit real*8 (a-h,o-z)!! Include file with internal STRUREL definitions include 'strurel.hf'!GCC$ ATTRIBUTES DLLEXPORT::PlanarTruss integer, intent(out) :: ier!# ============================================================================!# Planar Truss - Example for FORTRAN!# ============================================================================!# Inputs:!# X = [A1, A2, E1, E2, P1, P2, P3, P4, P5, P6, u_y]!# E1,E2: Youngs modulus of horizontal and inclined bars resp. - log-normally distributed!# A1,A2: cross section of horizontal and inclined bars resp. - log-normally distributed!# P1-P6: negative vertical forces attacking in nodes 8-13. - Gumbel distributed!# u_y: maximal allowed vertical deflection in node 4. - constant!# Output:!# uout: vertical truss deflection at bottom center (N04)!# ============================================================================!# Truss description taken from Lee, S.H., Kwak, B.M. (2006).!# Response surface augmented moment method for efficient reliability analysis.!# Structural Safety 28(3), 261 - 272.!# https://www.sciencedirect.com/science/article/abs/pii/S0167473005000421!#!# Based on Diego Andr%u00e9s Alvarez Mar%u00edn work -!# https://github.com/diegoandresalvarez/elementosfinitos/tree/master/codigo/repaso_matricial/cercha_2d!# !# N: Nodes!# R: Rods!# ============================================================================!# N13__R4___N12__R8___N11__R12__N10__R16__N09__R20__N08!# /\\ /\\ /\\ /\\ /\\ /\\!# / \\ / \\ / \\ / \\ / \\ / \\!# R1 R3 R5 R7 R9 R11 R13 R15 R17 R19 R21 R23!# / \\ / \\ / \\ / \\ / \\ / \\!# /___R2___\\/___R6___\\/__R10___\\/__R14___\\/__R18___\\/__R22___\\!# N01 N02 N03 N04 N05 N06 N07!# ||!# \\/!# uout => u_y @ N04!# ============================================================================ real*8 P(6) equivalence(P,v_XP_(5))!! FEM constants parameter(nfe=23,ned=2,nnp=13,ndof=2*13,nbd=2*2,nc=3) parameter(PI=3.14159265d0)!! Element, nodes and dofs association!! IEN: connectivity matrix, nfe x nodes - bar 1 has nodes 1 and 13, bar 2 has nodes 1 and 2 ... dimension IEN(ned,nfe) data IEN/1,13, 1,2, 13,2, 13,12, 2,12, 2,3, 12,3, 12,11, 3,11, * 3,4, 11,4, 11,10, 4,10, 4,5, 10,5, 10,9, 5,9, 5,6, * 9,6, 9,8, 6,8, 6,7, 8,7/!! Fixed dofs integer bc(nc) data bc/1, 2, 14/ !! Internal data real*8 LM(nbd,nfe),theta(nfe+1),leng(nfe+1),l1,l2, * Area(nfe+1),E(nfe+1),ke(nfe),K(ndof,ndof),T(nbd,nbd), * KL(nbd,nbd),TT(nbd,nbd),KT(nbd,nbd),KG(nbd,nbd), * fc(ndof),ac(ndof),NN(nfe),ken(nbd),keT(nbd),de(nbd)!! Visualization data real*8 wo,we,ho,he,XY(ned,nnp),v(2,2),sc,fp(ned,nnp), * X(nbd),Y(nbd),XYrot(ned,nbd+1),minA,maxA,ddA, * XYten(ned+1,nbd+1) data XY/0.d0,0.d0, 4.d0,0.d0, 8.d0,0.d0, 12.d0,0.d0, 16.d0,0.d0, * 20.d0,0.d0, 24.d0,0.d0, 22.d0,2.d0, 18.d0,2.d0, * 14.d0,2.d0, 10.d0,2.d0, 6.d0,2.d0, 2.d0,2.d0/ integer nf character*200 title,state character*7 co logical Init!!---------------------------------------------------------------------------!! Planar truss model!!--------------------------------------------------------------------------- StrurelPlot=.FALSE.!! Vector inputs - order from Stochastic Model A1=v_XP_(1) ! cross section of horizontal bars A2=v_XP_(2) ! cross section of inclined bars E1=v_XP_(3) ! Youngs modulus of horizontal bars E2=v_XP_(4) ! Youngs modulus of inclined bars!! LM: localization matrix, dof x nfe do n=1,nfe LM(1,n)=IEN(1,n)*ned-1; LM(2,n)=IEN(1,n)*ned