SPF File Format
SPF File Format
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
ModelString: holds the name of models, sections & curves (ASCII characters) SizeOf(UnitString)=17
ModelString = string[ShortNameLength];
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.
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.
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.
(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
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;
NoLayers: integer;
RoundingR: real;
Factor_na:real;
end;
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.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
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
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;
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
NoMaterialSets: integer;
//target displacement
StructuralType1_GRE: boolean;
//checks (shear in ASCE 41)
ASCE_IgnoreShearCapacityProvisions:boolean;
//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);
(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