SPF File Format
SPF File Format
SPF File Format
Main Constants
NodFrd = 6
ShortNameLength = 16
MaxNameLength = 32
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;
con_maID = 7;
con_tlID = 8;
con_cmID = 9;
con_hsID = 10;
se_smaID = 11;
frp_tlID = 12;
el_matID = 13;
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;
// 15 reinforced concrete sections
// columns
rcrsID = 30;
rcqsID = 31;
rcrrcsID = 32;
rccsID = 33;
rczcsID = 34;
rclcsID = 35;
rctcsID = 36;
// beams
5 SeismoStruct input file format * .SPF Seismosoft ltd.
rctsID = 37;
rcarsID = 38;
// walls
rcrwsID = 39;
rcbwsID = 40;
rcuwsID = 41;
rczwsID = 42;
rclwsID = 43;
// hollow
rcrhsID = 44;
rcrrchsID = 45;
rcchsID = 46;
// other
rcbgsID = 47;
// 13 jacketed reinforced concrete sections
rcjrsID = 48;
rcjrrcsID = 49;
rcjrs3ID = 50;
rcjrs2ID = 51;
rcjrs1ID = 52;
rcjcsID = 53;
rcjzcsID = 54;
rcjlcsID = 55;
rcjlcs3ID = 56;
rcjtcsID = 57;
rcjtcs3ID = 58;
rcjtsID = 59;
rcjts3ID = 60;
rcjts1ID = 61;
rcjarsID = 62;
rcjars1ID = 63;
// 5 composite sections
cpisID = 64;
pecsID = 65;
fecsID = 66;
crsID = 67;
ccsID = 68;
lin_asmID = 3;
bl_symID = 4;
bl_asmID = 5;
bl_kinID = 6;
trl_symID = 7;
trl_asmID = 8;
pinched_asmID = 9;
MIMK_bilinID = 10;
MIMK_peakID = 11;
MIMK_pinchedID = 12;
Non_lin_ElastID = 13;
plstID = 14;
TakedaID = 15;
Takeda_asmID = 16;
Ramberg_OsgoodID = 17;
Richard_AbbottID = 18;
ssi_pyID = 19;
gap_hkID = 20;
multi_linID = 21;
smoothID = 22;
Bouc_WenID = 23; // not active yet
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
7 SeismoStruct input file format * .SPF Seismosoft ltd.
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
9 SeismoStruct input file format * .SPF Seismosoft ltd.
NoLayers: integer;
RoundingR: real;
Factor_na:real;
11 SeismoStruct input file format * .SPF Seismosoft ltd.
end;
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
NoMaxCurvPar = 30
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
//------------------------------------------------------------------
// ------ adaptive pushover parameters ------
AdaptType: integer;
SettingsLoadingType,SettingsIncrPercent: integer;
SettingsCombinationType,SettingsAdaptiveFreq: integer;
SettingsAdaptCQCdamp,SettingsAdaptCQClamda: real;
SettingsSingleMode,SettingsSingleModeDir: integer;
AdaptDir: array[0..5] of boolean;
//------------------------------------------------------------------
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;
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;
ConfidenceFactor: real;
CFCustomValue: boolean;
Material_Properties_From_Default_Values_USA:boolean;
NoMaterialSets: integer;
24 SeismoStruct input file format * .SPF Seismosoft ltd.
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
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
NewBooleanSlot1, NewBooleanSlot2 & NewBooleanSlot3: are 3 old boolean variables
that are not needed anymore, the slot is kept for future use
TStructuralCode = (EC8, ASCE41_13, NTC08, KANEPE, TBDY, NTC18, noStructuralCode);
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);
25 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
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