0% found this document useful (0 votes)
134 views

SPF File Format

The document describes the input file format for SeismoStruct 2023, including sections on main constants, variable types, material constants, section constants, element type constants, response curve constants, and other types of variables used. It provides details on the various record types, constants, and enumerations that define the input format.

Uploaded by

Stelios Antoniou
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
134 views

SPF File Format

The document describes the input file format for SeismoStruct 2023, including sections on main constants, variable types, material constants, section constants, element type constants, response curve constants, and other types of variables used. It provides details on the various record types, constants, and enumerations that define the input format.

Uploaded by

Stelios Antoniou
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 29

SeismoStruct 2023

*.SPF Input File Format


2 SeismoStruct input file format * .SPF Seismosoft ltd.

Main Constants
NodFrd = 6
AddiNodFrd = 0 or 1 (1 only when warping needs to be modelled, i.e. when rack elements exist)
ShortNameLength = 16
AvgNameLength = 32
LargeNameLength = 64;
maxFilePathLength = 255
maxSecPatternLength = 60
maxDescriptionLength = 255

Main Variable Types


integer: 32-bit signed integer SizeOf(integer)=4

double: Double precision floating-point value (8 bytes) SizeOf(double)=8

real: Alias of Double SizeOf(real)=8

wideChar: holds a Unicode character SizeOf(widechar)=2

NameString: holds the name of materials, elements etc. SizeOf(Namestring)=64


NameString = array[0.. (AvgNameLength-1)] of wideChar;

ModelString: holds the name of models, sections & curves (ASCII characters) SizeOf(UnitString)=17
ModelString = string[ShortNameLength];

UnitString: holds the name of units (ASCII characters) SizeOf(UnitString)=33


UnitString = string[AvgNameLength];

PathString: holds the file name paths SizeOf(PathString)= 510


PathString = array[0.. (maxFilePathLength-1)] of wideChar;

DescriptionString:holds a description string SizeOf(DescriptionString)= 510


DescriptionString = array[0.. (maxDescriptionLength-1)] of wideChar;

PCriCCheckTyp_String:holds a description of a code-based check type


or of a performance criterion type SizeOf(PCriCCheckTyp_String)= 65
PCriCCheckTyp_String = string[LargeNameLength];

ReinfPatternString: reinf. pattern string, e.g corners (4@20mm) SizeOf(ReinfPatternString)= 120


ReinfPatternString = array[0.. (maxSecPatternLength-1)] of wideChar;

TFileSectionRec highlights the end of a section (e.g. end of Material Models) and the beginning of a new section
(e.g. beginning of Sections Models) in the SPF file SizeOf(TFileSectionRec)=13
type
TFileSectionRec = record
SectionTitle: string[8];
SectionID: integer;
end;
• SectionTitle should always be 'Section:'. If not, the file will be identified as
corrupt
• SectionID is 0 for the first TFileSectionRec and increases by one in each
occurrence of the record
3 SeismoStruct input file format * .SPF Seismosoft ltd.

Analysis Types Constants


DynamicThID = 1 Dynamic Time-history Analysis
StaticThID = 2 Static Time-history Analysis
PushoverID = 3 Static Pushover Analysis
AdPushoverID = 4 Static Adaptive Pushover Analysis
EigenID = 5 Eigenvalue Analysis
StaticID = 6 Static Analysis (non-variable load)
IdaID = 7 Incremental Dynamic Analysis
RsaID = 8 Response Spectrum Analysis
PushoverWithTDID = 9 Static Pushover Analysis with Target Displ. Calculation
AdPushoverWithTDID = 10 Adaptive Pushover with Target Displ. Calculation
BucklingAnalysisID = 11 Buckling Analysis
TsunamiID = 12 Tsunami Nonlinear Analysis
4 SeismoStruct input file format * .SPF Seismosoft ltd.

Material Constants
stl_blID = 0;
stl_mpID = 1;
stl_bl2ID =2;
stl_gmpID =3;
stl_roID = 4;
stl_drID = 5;
stl_mnID = 6;
stl_brbID =7;
con_maID = 8;
con_tlID = 9;
con_cmID = 10;
con_hsID = 11;
con_eccID = 12;
con_kspID = 13;
mas_tlID = 14;
mas_parID= 15;
se_smaID = 16;
frp_tlID = 17;
el_matID = 18;
hyst_matID = 19;

Section Constants
// 30 Plain/steel sections
rssID = 0;
rhsID = 1;
cssID = 2;
chsID = 3;
sitsID = 4;
agssID = 5;
dacssID = 6;
di1ID = 7;
di2ID = 8;
di1tbpID = 9;
di2tbpID = 10;
di1wpID = 11;
di2wpID = 12;
di1tbwpID = 13;
di2tbwpID = 14;
bbdcID = 15;
bbdccpID = 16;
bbdctbpID = 17;
bbdaID = 18;
bbdacpID = 19;
itbpID = 20;
itbwpID = 21;
itpID = 22;
ibpID = 23;
ibriID = 24;
ibrtID = 25;
sfaID = 26;
dabtbID = 27;
bbfaID = 28;
dadgID = 29;
cfsID = 30;
// 15 reinforced concrete sections
rcrsID = 31;
rcqsID = 32;
5 SeismoStruct input file format * .SPF Seismosoft ltd.

rcrrcsID = 33; //changed rssrcID to rcrrcsID


rccsID = 34;
rczcsID = 35;
rclcsID = 36;
rctcsID = 37;
// beams
rctsID = 38;
rcarsID = 39;
// walls
rcrwsID = 40;
rcbwsID = 41;
rcuwsID = 42;
rczwsID = 43;
rclwsID = 44;
// hollow
rcrhsID = 45;
rcrrchsID = 46;
rcchsID = 47;
// other
rcbgsID = 48;
// 13 jacketed reinforced concrete sections
rcjrsID = 49;
rcjrrcsID = 50;
rcjrs3ID = 51;
rcjrs2ID = 52;
rcjrs1ID = 53;
rcjcsID = 54;
rcjzcsID = 55;
rcjlcsID = 56;
rcjlcs3ID = 57;
rcjtcsID = 58;
rcjtcs3ID = 59;
rcjtsID = 60;
rcjts3ID = 61;
rcjts1ID = 62;
rcjarsID = 63;
rcjars1ID = 64;
// 5 composite sections
cpisID = 65;
pecsID = 66;
fecsID = 67;
crsID = 68;
ccsID = 69;
// 2 masonry sections
mwsID = 70;
mssID = 71;

Element Type Constants


A1-A31: structural type of elements, frame, truss, infill, link
B1&B2: mass elements
C1&C2: dampiing elements
A1 element type infrmDB element infrmDB_ID = 3
A2 element type NLlink element NLlinkID = 7
A3 element type shell4 element shell4ID = 17
A4 element type linLink element linLinkID = 20
A5 element type elfrmH element elfrmHID = 19
A6 element type elfrm element elfrmID = 4
A7 element type infill element infilID = 6
A8 element type masonry element masonryID = 14
6 SeismoStruct input file format * .SPF Seismosoft ltd.

A9 element type infrmFBPH element infrmFBPH_ID = 1


A10 element type infrmFB element infrmFB_ID = 0
A11 element type infrmDBPH element infrmDBPH_ID = 2
A12 element type ssilink1 element ssilink1ID = 12
A13 element type ssilink2 element ssilink2ID = 13
A14 element type bearing1 element bearing1ID = 15
A15 element type bearing2 element bearing2ID = 16
A20 element type truss element trussID = 5
A30 element type rack element rackID = 11
A31 element type rackH element rackHID = 18
B1 element type lmass element lmassID = 8
B2 element type dmass element dmassID = 9
C1 element type ddamp element dashptID = 10
C2 element type NLdashpt element NLdashptID = 21

Response Curve Constants


inf_strutID = 0;
inf_shearID = 1;
lin_symID = 2;
lin_asmID = 3;
bl_symID = 4;
bl_asmID = 5;
bl_kinID = 6;
trl_symID = 7;
trl_asmID = 8;
quad_symID = 9;
quad_asmID = 10;
pinched_asmID = 11;
MIMK_bilinID = 12;
MIMK_peakID = 13;
MIMK_pinchedID = 14;
Non_lin_ElastID = 15;
plstID = 16;
TakedaID = 17;
Takeda_asmID = 18;
Ramberg_OsgoodID = 19;
Richard_AbbottID = 20;
ssi_pyID = 21;
gap_hkID = 22;
multi_linID = 23;
smoothID = 24;
vsc_dmpID = 25;
bouc_wenID = 26;
gap_elplID = 27;
pound_hzID = 28;
scbID = 29;
gen_hystID = 30;

Rigid Constraint Constants


RigidLinkID = 0
RigidDiaphragmID = 1
EqualDOFID = 2

Other Types of Variables used


type
TStructuralCode = (EC8, ASCE41_13, NTC08, KANEPE, TBDY, NTC18, noStructuralCode);
7 SeismoStruct input file format * .SPF Seismosoft ltd.

type
TTargetDspMethod = (EC8_TD, ASCE41_13_TD, NTC08_TD, NTC18_TD, KANEPE_TD, TBDY_TD,
CSM_TD, ACSM_TD, DCM_TD, N2_TD);

type
TGlobalDamping = (StfProportional, MasProportional, Rayleigh, None);

type
TGlobalSTFDamping = (InitialSTF, TangentSTF);

type
TFRP_type = (Carbon, Aramid, Glass, steel, noFRP);

type
TConstrTyp = (RigidDiaphragm, RigidLink, EqualDOF, NoneConstType);

type
TDiaphragmTyp = (XYplane, XZplane, YZplane);

type
TCrvTyp = (FromFileCurve, UserDefinedCurve);

type
TLoadCategory = (PermanentLoad, DynamicTHLoad, StaticTHLoad, IncrementalLoad);

type
TLoadType = (FrcLoad, DspLoad, AccLoad);

type
TTypeOfPhase = (Load, Response, AutoResponse, AdLoad, AdResponse, nonP);

type
TPCriNotification = (PCriStop, PCriPause, PCriNotify, PCriNoAction);

type
TGrpItemsState = (nonList, GrpOfNodes, GrpOfElements);

type
TModalCombination = (MC_ABSSUM, MC_SRSS, MC_CQC);

type
TTransDirection = (plus_x, plus_y, plus_z, minus_x, minus_y, minus_z);

type
TSpectrumType = (Type_1, Type_2);

type
TSoilClass = (A_Soil, B_Soil, C_Soil, D_Soil, E_Soil);

type
TImportanceClass = (Importance_I, Importance_II, Importance_III, Importance_IV);

type
TTopographicCategory = (Topography_T1, Topography_T2, Topography_T3, Topography_T4);
8 SeismoStruct input file format * .SPF Seismosoft ltd.

SeismoStruct 2023 input file format


(1) Main Title
(i) TSPFTitleRec = record SizeOf(SPFTitleRec)=144
type
TSPFTitleRec = record
ProgramID : NameString;
Version : integer;
Release : integer;
Build : integer;
Version_No: integer;
VerifyProgramID: NameString;
end;
• ProgramID and VerifyProgramID should always be ' /&SeismoStruct file&/'. If not,
the file will come out corrupt
• Version = 2023
• Release = 1
• Build = 1
• Version_No: 95, it is the release number of the SPF file; it is used to check
older files and keep backwards comptibility

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(2) Main Project Data


(i) TMainProjectRec = record SizeOf(TMainProjectRec)=250
type
TMainProjectRec = record

AnalysisType: integer; //for new classes, the


sequence of items SHOULD REMAIN THE SAME!
NoMats,NoSecs: integer;
NoA1Classes, NoA2Classes, NoA6Classes, NoA7Classes: integer;
NoA9Classes,NoA10Classes,NoA11Classes,NoA20Classes: integer; // VERY IMPORTANT NOTE
NoB1Classes, NoB2Classes, NoC1Classes : integer;
NoNodes,NoElems,NoConstr: integer;
NoCrv,NoStg,NoLod,NoElmLod,NoPhs: integer;
NoCChecks,NoCri,NoStrs,NoGrp,NoRSA: integer;
NoA3Classes, NoA4Classes, NoA5Classes, NoA8Classes: integer;
NoA12Classes,NoA13Classes,NoA14Classes,NoA15Classes: integer;
NoB3Classes, NoB4Classes, NoC2Classes, NoC3Classes, NoA30Classes: integer;
NoCri_NonFRM, NoCChecks_NonFRM: integer;
AddiNodFrd, NoA31Classes: integer;
NoUserDefinedSec_Steel, NoUserDefinedSec_RC, NoConnectedSections: integer;
IntSlot9,IntSlot10: integer;
RealSlot1,RealSlot2,RealSlot3,RealSlot4,RealSlot5,RealSlot6: real;
isSPFcreatorFile: boolean;
end;
• General data of the structural model: Analysis type, No. of materials, No. of
sections, No. of A1-A31,B1,B2 & C1-C2 Classes (not elements!), No. of nodes,
elements, constraints, curves, stages, point loads, element loads, phases, code-
based checks, performance criteria, stress-points, groups, RSA combinations.
• Emply integer, real and boolean slots are included in the record for forward
compatibility. Slots also exist for newer element types, e.g. A16-A19, B3, B4, C3
• isSPFcreatorFile is true if the file is created with the SPF_Creator, and false in
any other case

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


9 SeismoStruct input file format * .SPF Seismosoft ltd.

(3) Units
(i) TProgramUnits = record SizeOf(TProgramUnits)=202
LengthUnit,ForceUnit,MassUnit: UnitString;
AccUnit,StressUnit,WeightUnit: UnitString;
UnitsType_Reinf: integer;
end;
• LengthUnit: 'mm', 'm', 'in', ft'.
• ForceUnit: 'N', 'kN', 'MN', 'lb', 'kip'
• MassUnit: 'tonne', 'ktonne', 'kg', 'tonne', it should be compatible with
LengthUnit and ForceUnit
• AccUnit: LengthUnit+'/sec2'
• StressUnit: 'MPa', 'GPa', 'Pa', 'kPa', it should be compatible with
LengthUnit and ForceUnit
• WeightUnit: ForceUnit +'/'+ LengthUnit + '3'
• UnitsType_Reinf: 0 for SI rebar types, 1 for US rebar types

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


• The position of the SPF file after this location is always 635.
10 SeismoStruct input file format * .SPF Seismosoft ltd.

(4) Materials (Materials tab)


(i)loop over all the defined materials
SPF_MainMat_ver19_Rec = record SizeOf(SPF_MainMat_ver19_Rec)=1035
nam: NameString;
Typ: ModelName;
Prp: array[0..Pred(MaxMatPrp)] of real;
IsExistMat: boolean;
UnfilledHeadJoints: boolean;
MasonryTypeID: integer;
ShearExpressionID: integer;
MeanStrength,LBStrength: real;
MeanHorizontalStrength,LBHorizontalStrength: real;
MeanShearStrength,LBShearStrength: real;
MeanDiagonalShearStrength,LBDiagonalShearStrength: real;
MeanTensionStrength,LBTensionStrength: real;
BrickLBStrength,BrickLBTensileStrength,ShearRatio:real;
BondPatternFactor,FrictionCoefficient: real;
BedJointCohesion,HeadJointCohesion: real;
DiagonalCrackingTangent: real;
end;
• Name, type & properties of material, IsExistingMaterial, Mean & lower-bound
strength
• UnfilledHeadJoints, MasonryTypeID, MeanHorizontalStrength, LBHorizontalStrength,
MeanDiagonalShearStrength, LBDiagonalShearStrength, MeanTensionStrength,
LBTensionStrength, BrickLBStrength, BrickLBTensileStrength, ShearRatio,
BondPatternFactor, FrictionCoefficient, BedJointCohesion, HeadJointCohesion,
DiagonalCrackingTangent aew specific for masonry materials
• MaxMatPrp = 100

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(5) Sections (Sections tab)


(i)loop over all the defined sections
SPF_MainSec_ver22_Rec = record SizeOf(Sec_ver22_Rec)=25170
nam: NameString;
Typ: ModelName;
Mat: array [0..Pred(AvMaxSecMat )] of NameString;
dim: array [0..Pred(AvMaxSecDim )] of real;
Lpat: array [0..Pred(AvMaxSecReinfPat)] of TReinfPattern;
NoAReinf: integer;
AReinf: array [0..Pred(MaxSecReinfAddBars)] of TSec_AReinf_data;
TPat: array [0..Pred(AvMaxSecTReinfPat)] of TTransReinfPattern;
FRP: TFRP_wrap_data;
Conf: TSec_Conf_data;
Shear: TSec_Shear_data;
AMass: real; // parameter not used, left for backwards compatibility reasons
end;

TReinfPattern = record SizeOf(TReinfPattern)=12


LPatType: integer;
NoBars: integer;
BarDim: integer; // for SI: 5,6,7..50 for Imperial: 3,4,5..18
end;

TTransReinfPattern = record SizeOf(TTransReinfPattern)=26


TPatType: integer;
NoBars_22: integer;
11 SeismoStruct input file format * .SPF Seismosoft ltd.

NoBars_33: integer;
BarDim: integer; //for SI: 5,6,7..50 for Imperial: 3,4,5..18
spacing: real;
spiral: boolean; //spiral hoops
DiamondStirrups:boolean;
end;

TFRP_wrap_data = record SizeOf(TFRP_wrap_data)=154


name: NameString;
Typ: TFRP_type;
Thickness, Ef, ffu, efu: real;
UseLaminatePrp: boolean;
NoDirections: integer;
beta: array [0 .. 3] of real;

NoLayers: integer;
RoundingR: real;
Factor_na:real;
end;

TSec_Conf_data = record SizeOf(TSec_Conf_data)=66


autoCalc: boolean;
closed135: boolean;
ConfFactor: array [0 .. (AvMaxSecConcRegions-1)] of real;
end;

TSec_AReinf_data = record SizeOf(TSec_AReinf_data)=24


Area,D2, D3: real;
end;

TSec_Shear_data = record SizeOf(TSec_Shear_data)=19


useValue : boolean;
autoCalc : boolean;
IncAxial : boolean;
ShearCap22: real;
ShearCap33: real;
end;
• Name, type materials, & dimensions, longitudinal reinforcement patterns, No. and
data (d2,d3,As) for additional longitudinal reinforcement, transverse
reinforcement patterns, FRP, confinement & shear data and additional section mass
• AvMaxSecMat = 6
• AvMaxSecDim = 15
• AvMaxSecReinfPat = 19
• MaxSecReinfAddBars = 999
• AvMaxSecTReinfPat = 5
• AvMaxSecConcRegions = 8
• AMass does not appear in the SeismoStruct GUI. The variable existed until
SeismoStruct v7 and is left for backwards compatibility

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


12 SeismoStruct input file format * .SPF Seismosoft ltd.

(6) Element Classes (Element Classes tab)

GENERAL: In all element classes local type of damping is defined


TDampPattern = record SizeOf(TDampPattern)=50
Typ: TGlobalDamping;
MassParam: real;
StfParam: real;
Period1,DampRatio1: real;
Period2,DampRatio2: real;
IsTangentSTF: boolean;
end;

(6.i) A1-infrmDB Element Classes


Loop over all the A1 Classes
SPF_MainA1Rec = record SizeOf(SPF_MainA1Rec)=258
nam: NameString;
NoSecs: integer;
Sec: array[0..1] of NameString;
Fib: integer;
Dmp: TDampPattern;
mas: real;
end;
• Name, number of sections, section names (1 or 2), number of fibers, damping and
additional mass

(6.ii) A6-elfrm Element Classes


Loop over all the A6 Classes
SPF_MainA6_ver2_Rec = record SizeOf(SPF_MainA6_ver2_Rec)=227
nam: NameString;
UserDefinedSec: boolean;
Sec: NameString;
Prm: array[0..4] of real;
Dmp: TDampPattern;
mas: real;
end;
• Name, UserDefinedSec (if the EA,EI,GJ values are user-defined) section name, EA,
EI2, EI3, GJ and Self-Mass parameters damping and additional mass

(6.iii) A5-elfrmH Element Classes


Loop over all the A5 Classes
SPF_MainA5Rec = record SizeOf(SPF_MainA5Rec)=1255
nam: NameString;
UserDefinedSec: boolean;
Sec: NameString;
ElastPrm: array[0..4] of real;
Crv: array[0..3] of ModelName;
CrvPrm: array[0..Pred(4*NoMaxCurvPar)] of real;
Dmp: TDampPattern;
mas: real;
end;
• Name, section, elastic parameters, response curve types, curve parameters, damping
and additional mass

(6.iv) A7-infill Element Classes


Loop over all the A7 Classes
SPF_MainA7_ver18_Rec = record SizeOf(SPF_MainA7_ver18_Rec)=700
13 SeismoStruct input file format * .SPF Seismosoft ltd.

nam: NameString;
Crv: array[0..1] of ModelName;
Prm: array[0..Pred(2*NoMaxCurvPar)] of real;
Oth: array[0..8] of real;
Dmp: TDampPattern;
end;
• Name, response curve types for strut and shear, curve parameters, other parameters
and damping
• NoMaxCurvPar = 30

(6.v) A3-shell4 Element Classes


Loop over all the A3 Classes
SPF_MainA3Rec = record SizeOf(SPF_MainA3Rec)=155
nam: NameString;
ElStfMod,PoissonRatio,thickness,mass:real;
IsMeshed: boolean;
numelX,numelY: integer;
Dmp: TDampPattern;
end;
• Name, elastic parameters, thickness, mass, option if it is meshed or not,
discretiation in X & Y and damping

(6.vi) A9-infrmFBPH Element Classes


Loop over all the A9 Classes
SPF_MainA9Rec = record SizeOf(SPF_MainA9Rec)=266
nam: NameString;
NoSecs: integer;
Sec: array[0..1] of NameString;
Fib: integer;
hng: real;
Dmp: TDampPattern;
mas: real;
end;
• Name, number of sections, section names (1 or 2), number of fibers, plastic hinge
length percentage, damping and additional mass

(6.vii) A10-infrmFB Element Classes


Loop over all the A10 Classes
SPF_MainA10Rec = record SizeOf(SPF_MainA10Rec)=774
nam: NameString;
NoSecs: integer;
Sec: array[0..9] of NameString;
Int: integer;
Fib: integer;
Dmp: TDampPattern;
mas: real;
end;
• Name, number of sections, section names (1-10), number of integration sections,
number of fibers, damping and additional mass

(6.viii) A11-infrmDBPH Element Classes


Loop over all the A11 Classes
PMainA11Rec = record SizeOf(PMainA11_ver19a_Rec)=351
nam: NameString;
NoSecs: integer;
Sec: array[0..1] of NameString;
AutoHingeParameters:boolean;
14 SeismoStruct input file format * .SPF Seismosoft ltd.

HingeParameters: array[0..Pred(12)] of real;


Dmp: TDampPattern;
mas: real;
end;
• Name, number of sections, section names (1 or 2), boolean to determine if the
hinge parameters are automatically calculated, plastic hinge parameters, damping
and additional mass

(6.ix) A20-truss Element Classes


Loop over all the A20 Classes
SPF_MainA20Rec = record SizeOf(SPF_MainA20Rec)=258
nam: NameString;
NoSecs: integer;
Sec: array[0..1] of NameString;
Fib: integer;
Dmp: TDampPattern;
mas: real;
end;
• Name, number of sections, section names (1 or 2), number of fibers, damping and
additional mass

(6.x) A30-rack Element Classes


Loop over all the A30 Classes
SPF_MainA30Rec = record SizeOf(SPF_MainA30Rec)=622
nam: NameString;
MatPrm:array[0..2] of real;
NoSecPoints:integer;
GeomPrm:array[0..Pred(3*MaxA30SecPoints-1)] of real;
Dmp: TDampPattern;
mas: real;
end;
• Name, parameters (stiffness, mass, additional mass), number of section points,
segment properties (X & Y coordinate, and thickness), damping and additional mass
• MaxA30SecPoints = 20

(6.xi) A31-rack Element Classes


Loop over all the A31 Classes
SPF_MainA31Rec = record SizeOf(SPF_MainA31Rec)=1890
nam: NameString;
MatPrm:array[0..Pred(3)] of real; //E, ν, selfmass
NoSecPoints:integer;
GeomPrm:array[0..Pred(3*MaxRACKSecPoints-1)] of real; //Xsec_Np,Ysec_Np,Tsec_Np-1
Crv: array[0..3] of ModelName;
Prm: array[0..Pred(4*NoMaxCurvPar)] of real;
Dmp: TDampPattern;
mas: real;
end;
• Name, parameters (stiffness, mass, additional mass), number of section points,
segment properties (X & Y coordinate, and thickness), curve types, curve
parameters, damping and additional mass
• MaxA30SecPoints = 20

(6.xii) A4-linear link Element Classes


Loop over all the A4 Classes
SPF_MainA4Rec = record SizeOf(SPF_MainA4Rec)=162
nam: NameString;
15 SeismoStruct input file format * .SPF Seismosoft ltd.

Stiffness: array[0..5] of real;


Dmp: TDampPattern;
end;
• Name, stiffness parameter for the 6 DOFs and damping

(6.xiii) A2-nonlinear link Element Classes


Loop over all the A2 Classes
SPF_MainA2_ver18_Rec = record SizeOf(SPF_MainA2_ver18_Rec)=1656
nam: NameString;
Crv: array[0..5] of ModelName;
Prm: array[0..Pred(6*NoMaxCurvPar)] of real;
Dmp: TDampPattern;
end;
• Name, response curve types in the 6 DOFs, parameters for the 6 curves and damping
• NoMaxCurvPar = 30

(6.xiv) A12-soil structure interation link Element Classes // not active yet
Loop over all the A12 Classes
SPF_MainA12Rec = record SizeOf(SPF_MainA12Rec)=269
nam: NameString;
Dim: array[0..Pred(2)] of real;
Stf: array[0..Pred(NodFrd)] of real;
Cap: array[0..Pred(NodFrd)] of real;
Prm: array[0..Pred(5)] of real;
Surf: Integer;
DashpotDmp: TDashpotDampPattern;
end;
• Name, footing dimensions, stiffness and capacity in the 6 DOFs, footing parameters
and boundary surface and damping

(6.xv) A13- soil structure interation link Element Classes // not active yet
Loop over all the A13 Classes
SPF_MainA13Rec = record SizeOf(SPF_MainA13Rec)=273
nam: NameString;
diam: real;
Stif: array[0..Pred(5)] of real;
Capc: array[0..Pred(2)] of real;
selSBpar: array[0..Pred(3)] of real;
Param: array[0..Pred(7)] of real;
DashpotDmp: TDashpotDamp2Pattern;
end;
• Name, pile diameter, stiffness and capacity, parameters and damping

(6.xvi) A14-bearing1 Element Classes


Loop over all the A14 Classes
SPF_MainA14Rec = record SizeOf(SPF_MainA14Rec)=273
nam: NameString;
stiffelb: array[0..5] of real;
ystrength: array[0..1] of real;
hardrat: array[0..1] of real;
hystpar: array[0..2] of real;
Dmp: TDampPattern;
end;
• Name, stiffness, strength, parameters and damping

(6.xvii) A15-bearing2 Element Classes


16 SeismoStruct input file format * .SPF Seismosoft ltd.

Loop over all the A15 Classes


SPF_MainA15Rec = record SizeOf(SPF_MainA15Rec)=226
nam: NameString;
stifpend: array[0..5] of real;
frcoeffspend: array[0..3] of real;
ratepend: array[0..1] of real;
radpend: array[0..1] of real;
Dmp: TDampPattern;
end;
• Name, stiffness, strength, parameters and damping

(6.xviii) B1-lmass Element Classes


Loop over all the B1 Classes
SPF_MainB1Rec = record SizeOf(SPF_MainB1Rec)=162
nam: NameString;
mas: array[0..5] of real;
Dmp: TDampPattern;
end;
• Name, mass parameters in the 6 DOFs and damping

(6.xix) B2-dmass Element Classes


Loop over all the B2 Classes
SPF_MainB2Rec = record SizeOf(SPF_MainB2Rec)=122
nam: NameString;
mas: real;
Dmp: TDampPattern;
end;
• Name, mass per length parameter and damping

(6.xx) C1-ddamp Element Classes


Loop over all the C1 Classes
SPF_MainC1Rec = record SizeOf(SPF_MainC1Rec)=112
nam: NameString;
Prm: array[0..5] of real;
end;
• Name and damping parameters in the 6 DOFs

(6.xxi) C2-ddamp Element Classes


Loop over all the C2 Classes
SPF_MainC2Rec = record SizeOf(SPF_MainC2Rec)=1606
nam: NameString;
Crv: array[0..5] of ModelName;
Prm: array[0..Pred(6*NoMaxCurvPar)] of real;
end;
• Name, curve type and curve parameters in the 6 DOFs

(xii) TFileSectionRec SizeOf(TFileSectionRec)=13


17 SeismoStruct input file format * .SPF Seismosoft ltd.

(7) Nodes: (Nodes and Restraints tabs)


(i)loop over all the defined nodes
SPF_MainNodes_ver22_Rec = record SizeOf(SPF_MainNodes_ver22_Rec)=106
nam: NameString;
x: real;
y: real;
z: real;
IsStructural: boolean;
fixed_Dir: array [0 .. Pred(NodFrd+MaxAddiNodFrd)] of boolean;
Output: boolean;
TsunamiLoaded: boolean;
TsunamiWeight: real;
end;
• Name, x,y & z coordinates, if it is a strucural node, restraints in the 6+1 DOFs,
and if the nodal deformations are output during the analysis

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(8) Elements (Element Connectivity and Code-based Checks tabs)


(i)loop over all the defined elements
SPF_MainElems_ver18_Rec = record SizeOf(SPF_MainElems_ver18_Rec)=1183
= record
nam: NameString;
Cls: NameString;
ElemTyp: integer;
Nod1: NameString;
Nod2: NameString;
Nod3: NameString;
Nod4: NameString;
Nod5: NameString; //not used
Nod6: NameString; //not used
Nod7: NameString; //not used
Nod8: NameString; //not used
Nod1_orient: NameString;
Nod2_orient: NameString;
x1: real;
y1: real;
Z1: real;
x2: real;
y2: real;
Z2: real;
x3: real;
y3: real;
Z3: real;
x4: real;
y4: real;
Z4: real;
x5: real; //not used
y5: real; //not used
Z5: real; //not used
x6: real; //not used
y6: real; //not used
Z6: real; //not used
x7: real; //not used
y7: real; //not used
Z7: real; //not used
x8: real; //not used
y8: real; //not used
18 SeismoStruct input file format * .SPF Seismosoft ltd.

Z8: real; //not used


X1_orient: real;
Y1_orient: real;
Z1_orient: real;
X2_orient: real;
Y2_orient: real;
Z2_orient: real;
OffsetX1: real; // X,Y,Z: the GLOBAL axes system
OffsetY1: real; // 1 or 2: 1st & 2nd node
OffsetZ1: real;
OffsetX2: real;
OffsetY2: real;
OffsetZ2: real;
Releases: array [0 .. 5] of boolean;
Activation: real;
Deactivation: real;
OutPut: boolean;
OutputStrs: boolean;
//-------------------------------------------------------------
IsPrimary: boolean;
WithoutDetailing: boolean;
BrittleBars, SmoothBars, IsAccessible: boolean;
LapTypeIndex, LapLengthIndex: integer;
LapLength: double;
//-------------------------------------------------------------
IntSlot1,IntSlot2,IntSlot3,IntSlot4,IntSlot5,IntSlot6: integer;
RealSlot1,RealSlot2,RealSlot3,RealSlot4,RealSlot5,RealSlot6: real;
BoolSlot1,BoolSlot2,BoolSlot3,BoolSlot4,BoolSlot5,BoolSlot6: boolean;
end;
• Name, class name, names of nodes 1-8 (currently up to 4 nodes are needed, the
additional nodes are kept for forward compatibility), names of orientation nodes 1
& 2, x/y/z coordinates of nodes 1-8 and orientation nodes 1-2, Offsets x/y/z of
the 1st and 2nd node (needed for the frame elements), DOF releases (6 internal
DOFs: M2a, M3a, M2b, M3b, F, Mt), activation & deactivation times, parameter to
determine if the element forces and internal stresses are output during the
analysis, and code-based parameters (the parameters are easy to understand from
the Advanced Properties dialog box)
• Empty slots are provided for integer, real and boolean variables, in order to keep
forward compatibility

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


19 SeismoStruct input file format * .SPF Seismosoft ltd.

(9) Constraints: (Constraints tab)


(i)loop over all the defined rigid constraints
SPF_MainConstrRec = record SizeOf(SPF_MainConstrRec)=76+NoSlvNods*64
= record
Typ: TConstrTyp;
mas: NameString;
DiaphragmTyp: TDiaphragmTyp;
dof: array[0..(NodFrd-1)] of boolean;
NoSlvNods: integer;
slv: array of NameString;
end;
• Type of constraint, name of master node, type of rigid diaphragm (RigidDiaphragm
type only), DOFs restrained (RigidLink and EqualDOF types only), number of slave
nodes, and array [0..(NoSlv-1)] with the names of the slave nodes
• TConstrTyp = (RigidDiaphragm, RigidLink, EqualDOF, NoneConstType). Size=1byte
• TDiaphragmTyp = (XYplane, XZplane, YZplane) . Size=1 byte

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(10) Curves: (Curves tab)


(i)loop over all the defined curves (for static or dynamic time-history analysis)
SPF_MainCrvRec = record SizeOf(SPF_MainCrvRec)=579+2*CrvStesp*8
= record
nam: NameString;
Typ: TCrvTyp;
des: DescriptionString;
CrvSteps: integer;
CrvTim,CrvAcc: array of real;
end;
• Name of curve, type of curve, description of curve, number of steps and arrays
[0..(CrvSteps-1)] of (i) the time values and (ii) the acceleration values
• TCrvTyp = (FromFileCurve, UserDefinedCurve). Size=1 byte

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(11) Stages: (Stages tab)


(i)loop over all the defined stages (for static or dynamic time-history analysis)
SPF_MainStgRec = record SizeOf(SPF_MainStgRec)=28
beg: real;
fin: real;
stp: integer;
dt: real;
end;
• start and end time, number of steps, and time-step

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


20 SeismoStruct input file format * .SPF Seismosoft ltd.

(12) Point Loads: (Loads tab)


(i)loop over all the defined point loads
SPF_MainLodRec = record SizeOf(SPF_MainLodRec)=142
cat: TLoadCategory;
Nod: NameString;
dir: integer;
Typ: TLoadType;
val: real;
Crv: NameString;
end;
• load category, node where the load is applied, direction (0..5), type of load
(force, displacement, acceleration), value and curve name (for DynamicTHLoad or
StaticTHLoad loads)
• TLoadCategory = (PermanentLoad, DynamicTHLoad, StaticTHLoad, IncrementalLoad).
Size=1 byte
• TLoadType = (FrcLoad, DspLoad, AccLoad). Size=1 byte

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(13) Element Loads: (Loads tab)


(i)loop over all the defined element loads
SPF_MainElmLodRec = record SizeOf(SPF_MainLodRec)=78
cat: TLoadCategory;
elm: NameString;
dir: integer;
Typ: TLoadType;
val: real;
end;
• load category (only PermanentLoad permitted), element where the load is applied,
direction (0..5), type of load (only force permiited) and value
• TLoadCategory = (PermanentLoad, DynamicTHLoad, StaticTHLoad, IncrementalLoad);
• TLoadType = (FrcLoad, DspLoad, AccLoad);

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(14) Phases: (Phases tab)


(i)loop over all the defined phases (for pushover analysis)
SPF_MainPhsRec = record SizeOf(SPF_MainPhsRec)=89
Typ: TTypeOfPhase;
lof: real;
stp: integer;
Nod: NameString;
dir: integer;
dsp: real;
end;
• type of phase (load control, response control, automatic response control,
adaptive load control, adaptive response control), load factor (for load control
and adaptive load control), number of steps (all but automatic response control),
controlled node (for response control and adaptive response control), direction
(for the 3 response control types), displacement (for the 3 response control
types)
• TTypeOfPhase = (Load, Response, AutoResponse, AdLoad, AdResponse, nonP). Size=1
byte

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


21 SeismoStruct input file format * .SPF Seismosoft ltd.

(15) Capacity Checks: (Capacity Checks tab)


(i)loop over all the defined capacity checks
SPF_MainCChecksRec = record SizeOf(SPF_MainCChecksRec)=661+NoELm*64
nam: NameString;
des: DescriptionString;
Typ: PCriCCheckTyp_String;
NoElm: integer;
elm: array of NameString;
ResidualStrength: integer;
ntf: TPCriNotification;
StructuralCode: TStructuralCode;
LimitStateID: integer;
col: TColor;
vis: integer;
end;
• name & description of check, type of check (0: chord rotation capacity, 1: shear
capacity), number (integer) and names (array 0..(NoElm-1))of the elements to be
checked, residual stength ratio, type of notification (i.e. action to be made upon
achievement of the strength), Structural Code, ID of the limit state (0:
operational level, 1: damage limitation, 2: significant damage, 3: near collapse -
similar names exists in different codes, the operational level limit state might
not be prsent in some Codes), color and visual effects ID
• TStructuralCode = (EC8, ASCE41_13, NTC08, KANEPE, TBDY, NTC18, noStructuralCode).
Size=1 byte
• TPCriNotification = (PCriStop, PCriPause, PCriNotify, PCriNoAction). Size=1 byte

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(16) Performance Criteria: (Performance Criteria tab)


(i)loop over all the defined point loads
SPF_MainCri_ver2_Rec = record SizeOf(SPF_MainCri_ver2_Rec)=734+NoELm*64
nam: NameString;
des: DescriptionString;
Typ: PCriCCheckTyp_String;
val: real;
AllMaterials: boolean;
Mat: NameString;
NoElm: integer;
elm: array of NameString;
ResidualStrength: integer;
ntf: TPCriNotification;
CoreOnly: boolean;
EquationID: integer;
col: TColor;
vis: integer;
end;
• name & description of criterion, type of criterion (0..8: for a description refer
to the Type of Criterion drop-down menu in the Performance Criteria dialog box),
value of the criterion (where required), AllMaterials check for strain-based
performance criteria, name of material for strain-based performance criteria,
number and names (array 0..(NoElm-1))of the elements to be checked, residual
stength ratio, type of notification (i.e. action to be made upon achievement of
the strength), CoreOnly check for the concrete strain-based criteria, ID of the
equation to be used to check the capacity, colour and visual effects ID
• TPCriNotification = (PCriStop, PCriPause, PCriNotify, PCriNoAction) . Size=1 byte

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


22 SeismoStruct input file format * .SPF Seismosoft ltd.

(17) Stress-points: (Output tab)


(i)loop over all the defined stress-points
SPF_MainStrs_ver2_Rec = record SizeOf(SPF_MainStrsRec)=280
nam: NameString;
elm: NameString;
Sec: NameString;
Mat: NameString;
ConfID: integer;
gaus: integer;
coor: array [0..1] of real;
end;
• name of stress point, element, section name, material name, confinement region ID,
integration section and coordinates of the location of the stress point

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(18) Groups: (Groups dialog box)


(i)loop over all the defined Groups
SPF_MainGrpRec = record SizeOf(SPF_MainGrpRec)=73+64* NoItm
nam: NameString;
Typ: TGrpItemsState;
NoItm: integer;
itm: array of NameString;
col: TColor;
end;
• group name and type (nodes or elements), number of nodes/elements, array of names
of nodes/elements (0..(NoItm-1)), and colour
• TGrpItemsState = (nonList, GrpOfNodes, GrpOfElements);

(b) TFileSectionRec SizeOf(TFileSectionRec)=13

(19) RSA combinations: (Response Spectrum Analysis tab)


(i)loop over all the defined RSA combinations
SPF_MainRSA_ver18_Rec = record SizeOf(SPF_MainRSA_ver18_Rec)=133
nam: NameString;
spf: array[0..2] of real;
lcfTyp: integer;
lcf: array[0..3] of real;
mcm: TModalCombination;
emm: real;
end;
• combination name, spectrum factors, load case combination type, load case factors,
moda combination method, min. cumulative effective modal mass
• TModalCombination = (MC_ABSSUM, MC_SRSS, MC_CQC). Size = 1byte

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


23 SeismoStruct input file format * .SPF Seismosoft ltd.

(20) Program Settings: (Program Settings dialog box)


(i) the record includes the Program Settings
TProgramSettings_ver23 = record SizeOf(TProgramSettings_ver22)=739
// general
BinaryOutput: Boolean;
TextOutput,MultipleTextOutput: boolean;
KeepSettings: Boolean;
IssueWarnings,HotTrack: Boolean;
//Elements
ApplyStressRecovery: boolean;
MasonryShearStrengthStepID:integer;
ThereAreElasticMasonryFibres: boolean;
//element iterative strategy
maxIterations_masonry,minIterations_masonry: integer;
MinConvNorm_masonry: real;
A8tolerance: real;
maxA8Iter: integer;
A8SubDivide_fbd_ite: boolean;
A9tolerance: real;
maxA9Iter: integer;
A9SubDivide_fbd_ite: boolean;
A10tolerance: real;
maxA10Iter: integer;
A10SubDivide_fbd_ite: boolean;
maxIterations_infrmDBPH,minIterations_infrmDBPH: integer;
MinConvNorm_infrmDBPH: real;
maxIterations_elfrmH,minIterations_elfrmH: integer;
MinConvNorm_elfrmH: real;
maxIterations_rackH,minIterations_rackH: integer;
MinConvNorm_rackH: real;
// integration.scheme
InteScheme: integer;
MainAlpha,MainBeta,MainGamma: real;
// iterative.strategy options
NoIter,MinIter,NoInitReform,DivIter: integer;
MultIncrease1,MultIncrease2,MultIncrease3: real;
MultDecrease1,MultDecrease2,MultDecrease3: real;
MaxReduction,MaxConv: real;
// convergence.criteria options
TypeOfCnvCriteria: integer;
Ref_toleranceFrc,Ref_toleranceMnt,DispRef,RotaRef: real;
ShowConvDifficulties: boolean;
AdaptCnvNorm: boolean;
MaxCnvNormIncrease: real;
// eigenvalue options
EigenSolver,NoEigen,NoEigenX,NoEigenY,NoEigenZ,EigenSteps: integer;
//cracked stiffness
Eigen_CrackedSecs: boolean;
Eigen_TypeOfCrackedSecs: integer;
Eigen_ColCrackedSecs,Eigen_BeamCrackedSecs,Eigen_WallCrackedSecs,
Eigen_ElfrmCrackedSecs,Eigen_TrussCrackedSecs,Eigen_InfillCrackedSecs: real;
Eigen_RackCrackedSecs,Eigen_MasonryCrackedSecs: real;
// damping
DampScheme,STFDampScheme: integer;
RayleighPer1,RayleighPer2,RayleighDmp1,RayleighDmp2: real;
ParmMAS,ParmSTF: real;
// gravity
GValue: real;
GravityDir: TTransDirection;
24 SeismoStruct input file format * .SPF Seismosoft ltd.

DefineMassFrom,DefineLoadsFrom: integer;
GravityXcoeff,GravityYcoeff,GravityZcoeff: real;
SecondOrderEffects_FRAME,SecondOrderEffects_MASONRY,ElasticAnalysis: boolean;
MassXdir,MassYdir,MassZdir: boolean;
MassRXdir,MassRYdir,MassRZdir: boolean;
MassWdir: boolean;
// constraints
ConstraintsType,PenaltyExp,PenaltyExpDiaphragm: integer;
// analysis
SolverType,CGexp, StepsToApplyInitialLoad: integer;
DoParallelAssembly, DoParallelIniChecks: boolean;
PerformEigenAtSteps:boolean;
PerformEigenEverySteps:integer;
CalculateSupportsFromRigidLinks: boolean;
//Elements
ShowPCriInEdges,NoAxialF_BeamsShearCalcs,JointAnalysesStresses: boolean;
//-------- ONLY IN SEISMOSTRUCT -------------------------------------
// Wizard
ElemProportion4,ElemProportion51,ElemProportion52: integer;
// Response Spectrum analysis
RSADamping,MinEffModalMass: real;
RSADirX,RSADirY,RSADirZ: boolean;
// Adaptive pushover parameters
AdaptType: integer;
SettingsLoadingType,SettingsIncrPercent: integer;
SettingsCombinationType,SettingsAdaptiveFreq: integer;
SettingsAdaptCQCdamp,SettingsAdaptCQClamda: real;
SettingsSingleMode,SettingsSingleModeDir: integer;
AdaptDir: array[0..5] of boolean;
// Buckling
EigenBucklingSolver,NoEigenBuckling,NoEigenBucklingX,NoEigenBucklingY,
NoEigenBucklingZ,EigenBucklingSteps: integer;
//-------------------------------------------------------------------
IntSlot1,IntSlot2,IntSlot3,IntSlot4,IntSlot5,IntSlot6,IntSlot7,
IntSlot8,IntSlot9,IntSlot10: integer;
RealSlot1,RealSlot2,RealSlot3,RealSlot4,RealSlot5,RealSlot6,RealSlot7,
RealSlot8,RealSlot9,RealSlot10: real;
SmoothDescendBranch_infrmDBPH:boolean;
BoolSlot2,BoolSlot3,BoolSlot4,BoolSlot5,BoolSlot6,BoolSlot7,
BoolSlot8,BoolSlot9,BoolSlot10: boolean;
end;
• The properies variables are arranged per tab (general, elements, wizard etc.) and
their names are self-exlpanatory
• At the end of the record 10 integer, real and boolean variables are reserved for
forward compatibility

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


25 SeismoStruct input file format * .SPF Seismosoft ltd.

(21) Code Requirements:


(Target Displacement tab and Safety Factors & Knowledge Level dialog boxes, accessed from the Code-based Checks
tab)
(i) the record includes the Structural Code Settings
TCodeRequirements_ver22b= record SizeOf(TCodeRequirements_ver22)=4382
//------- GENERAL SETTINGS & LIMIT STATES -------
StructuralCode: TStructuralCode;
EN_NationalAnnex: TEN_NationalAnnex;

LimitStateOL: boolean;
LimitStateDL: boolean;
LimitStateSD: boolean;
LimitStateNC: boolean;

KnowledgeLevel: integer;
KnowledgeLevel_Geometry,KnowledgeLevel_Details,
KnowledgeLevel_Materials:integer;
ConfidenceFactor: real;
CFCustomValue: boolean;
Material_Properties_From_Default_Values_USA:boolean;

SA_UserDefined_Spectrum: boolean;

//------- SPECTRA SETTINGS -------


SA_10prct_EC8: real; //employed in EC8, NTC08 & KANEPE
SAS_50prct_USA, SAL_50prct_USA: real; // employed in ASCE41-13 & TBDY
SAS_20prct_USA, SAL_20prct_USA: real;
SAS_05prct_USA, SAL_05prct_USA: real;
SAS_02prct_USA, SAL_02prct_USA: real;
SA_81prct_ITA: real; // employed in NTC-2008 for TR=30
SA_63prct_ITA: real; // employed in NTC-2008 for TR=50
SA_10prct_ITA: real; // employed in NTC-2008 for TR=475
SA_05prct_ITA: real; // employed in NTC-2008 for TR=975
SA_10prct_GRE: real; //employed in KANEPE
SAS_68prct_TUR, SAL_68prct_TUR: real; // employed in TBDY
SAS_50prct_TUR, SAL_50prct_TUR: real;
SAS_10prct_TUR, SAL_10prct_TUR: real;
SAS_02prct_TUR, SAL_02prct_TUR: real;

SA_UserDefined_Multiplier_HL0: real;
SA_UserDefined_Multiplier_HL1: real;
SA_UserDefined_Multiplier_HL2: real;
SA_UserDefined_Multiplier_HL3: real;
SA_UserDefined_Multiplier_HL4: real;
SA_UserDefined_Multiplier_HL5: real;
SA_UserDefined_Multiplier_HL6: real;
SA_UserDefined_Multiplier_HL7: real;
SA_UserDefined_Acceleration: array[0..Pred(SA_UserDefined_Periods)] of real;
SA_UserDefined_Time : array[0..Pred(SA_UserDefined_Periods)] of real;

QFactorValue: real;
DampingValue: real;
SpectrumType: TSpectrumType;
SoilClass: TSoilClass;
ImportanceClass: TImportanceClass;
TopographicCategory: TTopographicCategory;

GravityLoadsCoefficient: real;
LiveLoadsCoefficient: real;
26 SeismoStruct input file format * .SPF Seismosoft ltd.

SnowLoadsCoefficient: real;
OccupancyPurposeID: integer; //for TBDY

IndicateCoordinates_ITA, SelectLocation_ITA: boolean;


Long_ITA, Lati_ITA: real;
LocationID_ITA: integer;
LifeTime_ITA: real;
ImportanceClass_ITA: integer;
Fo_ITA: array [0 .. 3] of real;
Tc_star_ITA: array [0 .. 3] of real;
TransTL_USA: real;
PerfObjectives_USA: array [0 .. 3, 0 .. 3] of boolean;
PerfObjectives_GRE: array [0 .. 2, 0 .. 8] of boolean;
PerfObjectives_TUR: array [0 .. 3, 0 .. 3] of boolean;

NoMaterialSets: integer;

//target displacement
StructuralType1_GRE: boolean;
//checks (shear in ASCE 41)
ASCE_IgnoreShearCapacityProvisions:boolean;

// EuroCodes safety factors


EC8_gamma_el_shear_P, EC8_gamma_el_shear_S: real;
EC8_gamma_el_theta_tot_rect_P, EC8_gamma_el_theta_tot_rect_S: real;
EC8_gamma_el_theta_pl_rect_P, EC8_gamma_el_theta_pl_rect_S: real;
EC8_gamma_el_theta_tot_circ_P, EC8_gamma_el_theta_tot_circ_S: real;
EC8_gamma_c, EC8_gamma_s, EC8_gamma_fd: real;
EC8_jnt_gamma_RD: real;
EC8_UseA3Expressions, EC8_UseA10aExpressions: boolean;
EC8_gamma_mas:real;

//in ASCE 41 safety factors are not used directly in checks

// Italian Code safety factors


NTC18_gamma_el_shear_P, NTC18_gamma_el_shear_S: real;
ITA_gamma_el_theta_tot_rect_P, ITA_gamma_el_theta_tot_rect_S: real;
ITA_gamma_el_theta_tot_circ_P, ITA_gamma_el_theta_tot_circ_S: real;
ITA_gamma_c, ITA_gamma_s, ITA_acc, ITA_gamma_fd, ITA_gamma_m: real;
ITA_jnt_gamma_RD: real;
ITA_gamma_mas:real;

// Greek Code safety factors


GRE_gamma_c_Brittle_KL1, GRE_gamma_s_Brittle_KL1: real;
GRE_gamma_c_Brittle_KL2, GRE_gamma_s_Brittle_KL2: real;
GRE_gamma_c_Brittle_KL3, GRE_gamma_s_Brittle_KL3: real;
GRE_coeff_StandardAccess_Brittle, GRE_coeff_ReducedAccess_Brittle: real;
GRE_gamma_m_Ductile_KL1, GRE_gamma_m_Ductile_KL2: real;
GRE_gamma_m_Ductile_KL3: real;
GRE_coeff_StandardAccess_Ductile, GRE_coeff_ReducedAccess_Ductile: real;
GRE_Gamma_Rd: real;
GRE_Gamma_Sd_DMG1, GRE_Gamma_Sd_DMG2, GRE_Gamma_Sd_DMG3: real;
GRE_UseA3Expressions: boolean;
GRE_gamma_fd: real;
GRE_UseGama14Expression: boolean;

//TBDY safety factors - not used

//-------- ONLY IN SEISMOSTRUCT -------------------------------------


27 SeismoStruct input file format * .SPF Seismosoft ltd.

//target displacement
TargetDspMethod: TTargetDspMethod;
CalcTD: boolean;
ControlNode: NameString;
ControlDir: integer;
IsShearBuilding_USA_GRE: boolean;
LoadPatternUni_USA: boolean;
NoOfStoreys_USA_GRE: integer; //calculation of GRE and USA target displ.

//----------------------------------------------------------------------
IntSlot1,IntSlot2,IntSlot3,IntSlot4,IntSlot5: integer;
IntSlot6,IntSlot7,IntSlot8,IntSlot9,IntSlot10: integer;
RealSlot1,RealSlot2,RealSlot3,RealSlot4,RealSlot5: real;
RealSlot6,RealSlot7,RealSlot8,RealSlot9,RealSlot10: real;
BoolSlot1,BoolSlot2,BoolSlot3,BoolSlot4,BoolSlot5: boolean;
BoolSlot6,BoolSlot7,BoolSlot8,BoolSlot9,BoolSlot10: boolean;
NameSlot1: NameString;
end;

• The names of the properies variables are self-exlpanatory, the suffices _EC8,
_USA, _ITA, _GRE & _TUR refer to the European, US, Italian, Greek and Turkish
Codes respectively
• For the spectrum definition settings for each Code are saved, as well as data for
a user defined spectrum
• At the end of the record 9 integer, 10 real and 10 boolean variables are reserved
for forward compatibility. The 10th integer slot has already been used
• TStructuralCode = (EC8, ASCE41_13, NTC08, KANEPE, TBDY, NTC18, noStructuralCode);
• TEN_NationalAnnex = (EN_Recommended, AUT_NA, BEL_NA, BGR_NA, CYP_NA, CZE_NA,
DEU_NA, DNK_NA, ESP_NA, EST_NA, FIN_NA, FRA_NA, GBR_NA, GRC_NA, HRV_NA, HUN_NA,
IRL_NA, ITA_NA, LTU_NA, LUX_NA, LVA_NA, MLT_NA, NLD_NA, NOR_NA, POL_NA, PRT_NA,
ROU_NA, SVK_NA, SVN_NA, SWE_NA );
• TTargetDspMethod = (EC8_TD, ASCE41_13_TD, NTC08_TD, NTC18_TD, KANEPE_TD, TBDY_TD,
CSM_TD, ACSM_TD, DCM_TD, N2_TD);
• TSoilClass = (A_Soil, B_Soil, C_Soil, D_Soil, E_Soil);
• TImportanceClass = (Importance_I, Importance_II, Importance_III, Importance_IV);
• TTopographicCategory = (Topography_T1, Topography_T2, Topography_T3,
Topography_T4);

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13


28 SeismoStruct input file format * .SPF Seismosoft ltd.

(22) Spectrum Value and Settings: (Adaptive Pushover and RSA tabs)
(i) read a record that includes the Spectrum Settings
TSpectrumSettings = record SizeOf(TSpectrumSettings)=542
LoadSpectrumType : integer;
sprTimeCol,sprAccCol,sprFirstline,sprLastline: integer;
SprAccRows: integer;
SprFile : PathString;
sprDamp: real;
end;
• Spectrum type (0: spectrum not defined, 1: from given accelerogram, 2: user
defined spectrum), time & acceleration columns in the time-history file, first and
last line considered, total record rows, path of the acceleration file, damping
value.
• After the spectrum settings one time-acceleration time-history record and two
spectal shapes are stored.
• The record stores the time-history values (time&Accelearion) that were used for
the calculation of the specrum, when the From a Given Acceleragram setting has
been selected
• Regarding the two spectral shapes: (i) the first keeps the spectral shapes that
has been calculated using an acceleration time-history record above (ii) the
second is the user-defined spectrum. Both shapes are kept

(ii) read the stored time & acceleration values of the loaded accelerogram
TSpectrumValues = record SizeOf(TSpectrumValues)=8+2*SprRows*8
SprRows_: integer;
TimeSpr_,AccSpr_: array of real;
end;
• stores time & acceleration values of the accelerogram that is used for the
calculation of the defined spectrum

(iii) read the stored period & spectral acceleration of spectrum 1


TSpectrumValues = record SizeOf(TSpectrumValues)=8+2*SprRows*8
SprRows_: integer;
TimeSpr_,AccSpr_: array of real;
end;
• stores period & spectral acceleration values of spectrum 2

(iv) read the stored period & spectral acceleration of spectrum 2


TSpectrumValues = record SizeOf(TSpectrumValues)=8+2*SprRows*8
SprRows_: integer;
TimeSpr_,AccSpr_: array of real;
end;
• stores period & spectral acceleration values of spectrum 2

(v) TFileSectionRec SizeOf(TFileSectionRec)=13


29 SeismoStruct input file format * .SPF Seismosoft ltd.

(23) IDA Settings: (IDA tab)


(i) read a record that includes the IDA Settings
TIDASettings = record SizeOf(TIDASettings)=170+ NoIDAdistinctVal*8
IDAstartEnd,IDAdistinct: boolean;
IDAstartSF,IDAendSF,IDAstepSF,IDAtimeTol: real;
NoIDAdistinctVal: integer;
IDAdistinctVal: array of real;
IDANode1,IDANode2: NameString;
IDAdir: integer;
end;
• IDAstartEnd,IDAdistinct: determine if the Start-End-Step and/or Distinct Scaling
Factors options have been selected
• The other variables can be easily understood from the IDA tab

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(24) Output Settings: (Output tab)


(i) read a record that includes the Output Settings
OtptSettingsRec = record SizeOf(OtptSettingsRec)=153
OtptFrequency: integer;
PostMultiplier,PostMultiplierEig: real;
PlotNode1,PlotNode2: NameString;
PlotDir: integer;
OtptRelDispl: boolean;
end;
• The first variables contain settings for the output frequency and the real-time
plotting.
• The other settings contain the names of the lists of nodes, elements and groups of
nodes & elements, and boolean variables that determine if output data are to be
output for these nodes/elements in the results *.srf file
• No TFileSectionRec is stored at the end of the file

(ii) TFileSectionRec SizeOf(TFileSectionRec)=13

(25) Tsunami Settings


(i) read a record that includes the Tsunami Settings
TTsunamiSettings_ver22 = record SizeOf(TTsunamiSettings_ver22)=variable
maxdepth_MCT,maxvelocity_MCT,TsunamiImpFac,BlockingFraction: Real;
Angle_Building_Tsunami,FluidDensity,TsunamiWidth,RefHeight,CCX_Factor: Real;
TsunamiCalcMethod,IntSlot0,TsunamiDistribution: Integer;
numsteps_CDPO,TsunamiTS,Tsunami_TS_numsteps: Integer;
Max_CDPO_DeformationRatio,ConstFroudeNum,Tsunami_Min_Depth: real;
tsunami_depth,tsunami_vel,tsunami_totalForce: array of Real;
tsunami_Froude,tsunami_time: array of Real;
Apply_CDPO: boolean;
IntSlot1, IntSlot2, IntSlot3, IntSlot4, IntSlot5: integer;
RealSlot1,RealSlot2,RealSlot3,RealSlot4,RealSlot5: real;
BoolSlot1,BoolSlot2,BoolSlot3,BoolSlot4,BoolSlot5: boolean;
end;

You might also like