MODULAR ======= Program for generating modular structures (prismatic, pyramidal, pyramidal frustum) For NELSAS program. Input Data: I. BASE MODULE: This is defined as a right prism. 1) Number of Nodes 2) Node coordinates II. EXPANSION 1) Direction 2) Number of moduli 3) Expansion type: prismatic; pyramidal. III) Basis: The basis are consideres with respect to the expansion direction (watcher to DIR+) Baza0 =Lower Basis Baza0 =Upper Basis In the input file: ngl = No. of degrees of freedom nnBaza0 = No. of nodes in the lower base POLYGON (Base0) nnBaza1 = No. of nodes in the upper base POLYGON (Base1) = current nn = No. of nodes dir = Expansion direction, i.e.: X, Y, Z. nModule = No. of modules lmodul = Module length in direction "dir". iType = Expansion type: 1 =prismatic; 2= pyramidal frustum; 3 = prism - shrink along a direction. ratio = Base1/Base0 size ratio. xFoot = Coordinates of pyramid vertex foot (in Baze0). III. CONNECTIVITY 1) Number of elements 2) (Oriented) Element index: initial node; final node. Data from the Input file, except data 14-15, refer to base module, namely: 0) Commentaries: // ... 1) Problem title: max. 80 characters. 2) Number of degrees of freedom (2/3); nnBaza0; nnBaza1 3) Text_Line: Example: "Coordinates" 4) Node, coordinates 5) Text_Line: Example: "Expansion" 6) Expansion direction: X, Y, Z 7) Number of modules; Modulus length; iTip: 1=prismatic; 2=pyramidal frustum; 3 = prism - shrink along a direction 8) If iType ==2: 8a) Ratio = Base1/Base0 size ratio; 8b) Coordinates of pyramid vertex foot (in Baze0). 9) If iType ==3: 9a) Shrink_ratio = Reduction ratio in direction "dir_shrink" (may be greater than one, too); 9b) Dir_shrink = Reduction direction (may be other than "Expansion direction" - data 6) 10) If iType ==4: 10a) Arch Type: 1=circular; 2 =parabolic. 10b) l (half-span) 10c) h (height). 11) Text_Line: Example: "Topology" 12) Number of elements - in base modululus 13) Element index; initial node ; final node The next data refer to the structure: 14) Number of types (this is <=4) 14-1a) Name of type 1 (text <= 40 characters) 14-1b) Cross-sectional area for type 1 14-2a) Name of type 2 (text) 14-2b) Cross-sectional area for type 2 14-3a) Name of type 3 (text) 14-3b) Cross-sectional area for type 3 14-4a) Name of type 4 (text) 14-4b) Cross-sectional area for type 4 Examples: see Files: "TestZ.dat" (iType =1); "TestZ-Piramida.dat" (iType =2); "TestZ-Xshrink.dat" (iType =3). NOTE-1: Base Modulus -------------------- For a pyramid frustum (and for an arch): the BASE MODULE is defined as a RIGHT PRISM, too. Pyramid frustum: The program generates coordinates "x(1:ngl)" also for Base1 - according to "ratio". In the save file: For nodes in Base1: the initial coordinates are saved (xBaza)= as for the prism. NOTE-2: Nodes Numbering (Base Module): -------------------------------------- Nodes in Base0: are numbered with the FIRST INDICES: 1, 2, ..., nnBaza0. Nodes in Base1: - Are numbered IN THE SAME SENSE as in Base0. - With the FIRST INDICES, that is, nnBaza0+1, ..., 2*nnBaza0, one numbers the nodes that correspond to nodes in Base0 - in the expansion direction. - With the next indices: intermediate nodes (in which come diagonals). Example: nnBaza0 =3; nnBaz1 =5; Extindere =Y. The first 3 indices of nodes in Base1 "4;5;6": correspond respectively to nodes "1;2;3" din Baza0. ^ Y | | 4-----7------5------8-----6 Base1 | / \ | / \ | | / \ | / \ | |/ \ | / \| 1------------2------------3 Base0 ----->X NOTE-3: Elements Numbering (Base module) --------------------------------------- - FIRST INDICES: are assigned to the elements parallel to the expansion direction. - Next indices: elements in Base1; - Next indices: diagonal elements (prefered orientation: Base0 -> Base1). - Next indices: cross-section diagonals. - LAST INDICES: elements in Base0. Example: nelBase =13; nel0 =2 ^ Y (Expansion) | | o--4--o--5---o--6---o--7--o Base1 | / \ | / \ | 1 8 9 2 10 11 3 |/ \ | / \| o----12------o-----13-----o Base0 NOTE-4: Nodes and Elements Numbering (Structure): ------------------------------------------------- NODES: - Nodes are numbered succesively in modules, according to the rules for Base Module nubering. - An option allows to re-number the nodes, such that the last indices be assigned to nodes in Base0 of the Base Module. ELEMENTS: The program numbers the elements, assigning: - First indices to elements of type 1: in the expansion direction (longitudinal) - Next indices to elements of type 2: orthogonal to the expansion direction (transversal) - Next indices to elements of type 3: longitudinal diagonals. - Next indices to elements of type 4: cross-section diagonals. - Last indices to: elements in Base0. Note: The elements in the base module are re-numbered, according to the above rules. NOTE-5: Coordinates Axes: ----------------------- - Plane Structure (ngl=2): The vertical axis is axis Y; Orientation: "upward". - Space Structure (ngl=3): The vertical axis is axis Z; Orientation: "upward". Axis X: oriented "rightward"; Axis Y: oriented "forward". xxx EXAMPLE of INPUT FILE (Modular-Z-Diag-K.dat): --------------------- // Bases = rectangle 2x2; heigth =2 // Expansion: Z direction // 3 modules // Modulus length =2 // Expansion type = 1 (prismatic) // Test for Z expansion - Tower with K diagonals + horizontal diagonals 3 4 8 Coordinates: 1 0 0 0 2 2 0 0 3 2 2 0 4 0 2 0 5 0 0 2 6 2 0 2 7 2 2 2 8 0 2 2 9 1 0 2 10 2 1 2 11 1 2 2 12 0 1 2 Expansion: Z 3 2. 1 Topology 24 1 1 5 2 2 6 3 3 7 4 4 8 5 5 9 6 9 6 7 6 10 8 10 7 9 7 11 10 11 8 11 8 12 12 12 5 13 1 9 14 9 2 15 2 10 16 10 3 17 3 11 18 11 4 19 4 12 20 12 1 21 9 10 22 10 11 23 11 12 24 12 9 3 Longitudinal 3. Transversal 2. Diagonal 1. Horizontal Diagonal 0.5 ========== February 2003