RSSeismicScripting 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rsseismic/Application.py +196 -0
- rsseismic/ApplicationManager.py +111 -0
- rsseismic/BedrockLayer.py +29 -0
- rsseismic/MeanProfile.py +169 -0
- rsseismic/MeanProfileSoilLayer.py +119 -0
- rsseismic/Model.py +204 -0
- rsseismic/Motions.py +140 -0
- rsseismic/ProfileGenerationSettings.py +29 -0
- rsseismic/Profiles.py +186 -0
- rsseismic/ProjectSettings.py +46 -0
- rsseismic/ReferenceCurve.py +73 -0
- rsseismic/Results.py +419 -0
- rsseismic/SoilLayer.py +34 -0
- rsseismic/SoilLayerCurve.py +124 -0
- rsseismic/SoilLayerOperations.py +120 -0
- rsseismic/__init__.py +79 -0
- rsseismic/_application_paths.py +74 -0
- rsseismic/_batch_compute.py +420 -0
- rsseismic/_client.py +81 -0
- rsseismic/_proto_converters.py +345 -0
- rsseismic/_proxyObject.py +11 -0
- rsseismic/_result_bulk_dataframes.py +202 -0
- rsseismic/_result_dataframes.py +77 -0
- rsseismic/_rpc_helpers.py +55 -0
- rsseismic/enums/__init__.py +23 -0
- rsseismic/enums/_generated.py +120 -0
- rsseismic/enums/fitting_procedure.py +15 -0
- rsseismic/exceptions.py +11 -0
- rsseismic/generatedFiles/ApplicationService_pb2.py +46 -0
- rsseismic/generatedFiles/ApplicationService_pb2.pyi +67 -0
- rsseismic/generatedFiles/ApplicationService_pb2_grpc.py +274 -0
- rsseismic/generatedFiles/BedrockLayerDataService_pb2.py +27 -0
- rsseismic/generatedFiles/BedrockLayerDataService_pb2.pyi +5 -0
- rsseismic/generatedFiles/BedrockLayerDataService_pb2_grpc.py +231 -0
- rsseismic/generatedFiles/CommonMessages_pb2.py +50 -0
- rsseismic/generatedFiles/CommonMessages_pb2.pyi +113 -0
- rsseismic/generatedFiles/CommonMessages_pb2_grpc.py +29 -0
- rsseismic/generatedFiles/MeanProfileService_pb2.py +62 -0
- rsseismic/generatedFiles/MeanProfileService_pb2.pyi +176 -0
- rsseismic/generatedFiles/MeanProfileService_pb2_grpc.py +458 -0
- rsseismic/generatedFiles/MeanProfileSoilLayerDataService_pb2.py +45 -0
- rsseismic/generatedFiles/MeanProfileSoilLayerDataService_pb2.pyi +87 -0
- rsseismic/generatedFiles/MeanProfileSoilLayerDataService_pb2_grpc.py +360 -0
- rsseismic/generatedFiles/ModelService_pb2.py +54 -0
- rsseismic/generatedFiles/ModelService_pb2.pyi +122 -0
- rsseismic/generatedFiles/ModelService_pb2_grpc.py +360 -0
- rsseismic/generatedFiles/MotionService_pb2.py +78 -0
- rsseismic/generatedFiles/MotionService_pb2.pyi +224 -0
- rsseismic/generatedFiles/MotionService_pb2_grpc.py +575 -0
- rsseismic/generatedFiles/ProfileGenerationSettingsService_pb2.py +27 -0
- rsseismic/generatedFiles/ProfileGenerationSettingsService_pb2.pyi +5 -0
- rsseismic/generatedFiles/ProfileGenerationSettingsService_pb2_grpc.py +145 -0
- rsseismic/generatedFiles/ProfileService_pb2.py +76 -0
- rsseismic/generatedFiles/ProfileService_pb2.pyi +246 -0
- rsseismic/generatedFiles/ProfileService_pb2_grpc.py +532 -0
- rsseismic/generatedFiles/ProjectSettingsDataService_pb2.py +35 -0
- rsseismic/generatedFiles/ProjectSettingsDataService_pb2.pyi +40 -0
- rsseismic/generatedFiles/ProjectSettingsDataService_pb2_grpc.py +232 -0
- rsseismic/generatedFiles/ReferenceCurveDataService_pb2.py +41 -0
- rsseismic/generatedFiles/ReferenceCurveDataService_pb2.pyi +73 -0
- rsseismic/generatedFiles/ReferenceCurveDataService_pb2_grpc.py +281 -0
- rsseismic/generatedFiles/ResultsService_pb2.py +82 -0
- rsseismic/generatedFiles/ResultsService_pb2.pyi +373 -0
- rsseismic/generatedFiles/ResultsService_pb2_grpc.py +489 -0
- rsseismic/generatedFiles/SoilLayerCurveDataService_pb2.py +52 -0
- rsseismic/generatedFiles/SoilLayerCurveDataService_pb2.pyi +150 -0
- rsseismic/generatedFiles/SoilLayerCurveDataService_pb2_grpc.py +280 -0
- rsseismic/generatedFiles/SoilLayerDataService_pb2.py +27 -0
- rsseismic/generatedFiles/SoilLayerDataService_pb2.pyi +5 -0
- rsseismic/generatedFiles/SoilLayerDataService_pb2_grpc.py +231 -0
- rsseismic/generatedFiles/SoilLayerService_pb2.py +46 -0
- rsseismic/generatedFiles/SoilLayerService_pb2.pyi +122 -0
- rsseismic/generatedFiles/SoilLayerService_pb2_grpc.py +317 -0
- rsseismic/generatedFiles/__init__.py +4 -0
- rsseismic/properties/_PropertyAccessor.py +151 -0
- rsseismic/properties/__init__.py +6 -0
- rsseismic/properties/bedrockLayer/__init__.py +1 -0
- rsseismic/properties/bedrockLayer/_generated.py +127 -0
- rsseismic/properties/meanProfileSoilLayer/__init__.py +1 -0
- rsseismic/properties/meanProfileSoilLayer/_generated.py +87 -0
- rsseismic/properties/profileGenerationSettings/__init__.py +1 -0
- rsseismic/properties/profileGenerationSettings/_generated.py +195 -0
- rsseismic/properties/projectSettings/__init__.py +1 -0
- rsseismic/properties/projectSettings/_generated.py +270 -0
- rsseismic/properties/referenceCurve/__init__.py +1 -0
- rsseismic/properties/referenceCurve/_generated.py +264 -0
- rsseismic/properties/soilLayer/__init__.py +1 -0
- rsseismic/properties/soilLayer/_generated.py +523 -0
- rsseismic/types.py +311 -0
- rsseismicscripting-3.0.0.dist-info/METADATA +88 -0
- rsseismicscripting-3.0.0.dist-info/RECORD +94 -0
- rsseismicscripting-3.0.0.dist-info/WHEEL +5 -0
- rsseismicscripting-3.0.0.dist-info/licenses/License.txt +20 -0
- rsseismicscripting-3.0.0.dist-info/top_level.txt +1 -0
rsseismic/types.py
ADDED
|
@@ -0,0 +1,311 @@
|
|
|
1
|
+
"""Public value types for RSSeismic scripting (protobuf stays internal)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from dataclasses import dataclass
|
|
6
|
+
from enum import Enum
|
|
7
|
+
from enum import IntEnum
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class UnitSystem(Enum):
|
|
11
|
+
"""Project unit system (maps to server isMetric / useMetric RPC flags)."""
|
|
12
|
+
|
|
13
|
+
Metric = "Metric"
|
|
14
|
+
Imperial = "Imperial"
|
|
15
|
+
|
|
16
|
+
def to_use_metric(self) -> bool:
|
|
17
|
+
"""Return the useMetric / isMetric flag sent on the wire."""
|
|
18
|
+
return self is UnitSystem.Metric
|
|
19
|
+
|
|
20
|
+
@classmethod
|
|
21
|
+
def from_is_metric(cls, is_metric: bool) -> UnitSystem:
|
|
22
|
+
return cls.Metric if is_metric else cls.Imperial
|
|
23
|
+
|
|
24
|
+
class ResultMotionType(IntEnum):
|
|
25
|
+
"""Motion variants in the compute-aligned result motion set."""
|
|
26
|
+
|
|
27
|
+
STANDARD = 1
|
|
28
|
+
COMPLEMENTARY_EQUIVALENT_LINEAR = 2
|
|
29
|
+
COMPLEMENTARY_NONLINEAR_TOTAL_STRESS_LUMPED_MASS = 3
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
class ResultSeriesKind(IntEnum):
|
|
33
|
+
"""Chart series available from computed profile results."""
|
|
34
|
+
|
|
35
|
+
ACCELERATION = 1
|
|
36
|
+
VELOCITY = 2
|
|
37
|
+
DISPLACEMENT = 3
|
|
38
|
+
ARIAS = 4
|
|
39
|
+
SHEAR_STRAIN = 5
|
|
40
|
+
SHEAR_STRESS_RATIO = 6
|
|
41
|
+
PWP_RATIO = 7
|
|
42
|
+
RESPONSE_SPECTRA = 8
|
|
43
|
+
FAS = 9
|
|
44
|
+
FAS_RATIO = 10
|
|
45
|
+
PGA = 11
|
|
46
|
+
PGD = 12
|
|
47
|
+
MAX_STRAIN = 13
|
|
48
|
+
MAX_STRESS = 14
|
|
49
|
+
MAX_PWP_RATIO = 15
|
|
50
|
+
EFFECTIVE_STRESS = 16
|
|
51
|
+
MOBILIZED_STRESS = 17
|
|
52
|
+
NORMALIZED_STRESS = 18
|
|
53
|
+
MOBILIZED_FRICTION_ANGLE = 19
|
|
54
|
+
EFFECTIVE_VERTICAL_STRESS = 20
|
|
55
|
+
|
|
56
|
+
@property
|
|
57
|
+
def requires_layer(self) -> bool:
|
|
58
|
+
"""True when getResultSeriesDataFrame requires a layerID."""
|
|
59
|
+
return self in _LAYER_RESULT_SERIES
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
_LAYER_RESULT_SERIES = frozenset(
|
|
63
|
+
{
|
|
64
|
+
ResultSeriesKind.ACCELERATION,
|
|
65
|
+
ResultSeriesKind.VELOCITY,
|
|
66
|
+
ResultSeriesKind.DISPLACEMENT,
|
|
67
|
+
ResultSeriesKind.ARIAS,
|
|
68
|
+
ResultSeriesKind.SHEAR_STRAIN,
|
|
69
|
+
ResultSeriesKind.SHEAR_STRESS_RATIO,
|
|
70
|
+
ResultSeriesKind.PWP_RATIO,
|
|
71
|
+
ResultSeriesKind.RESPONSE_SPECTRA,
|
|
72
|
+
ResultSeriesKind.FAS,
|
|
73
|
+
ResultSeriesKind.FAS_RATIO,
|
|
74
|
+
ResultSeriesKind.EFFECTIVE_VERTICAL_STRESS
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@dataclass(frozen=True)
|
|
80
|
+
class ProfileSummary:
|
|
81
|
+
"""Summary of a profile in the project."""
|
|
82
|
+
|
|
83
|
+
name: str
|
|
84
|
+
isActive: bool
|
|
85
|
+
layerCount: int
|
|
86
|
+
totalThickness: float
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
@dataclass(frozen=True)
|
|
90
|
+
class ActiveProfile:
|
|
91
|
+
"""Summary of the active profile."""
|
|
92
|
+
|
|
93
|
+
profileName: str
|
|
94
|
+
layerCount: int
|
|
95
|
+
totalThickness: float
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
@dataclass(frozen=True)
|
|
99
|
+
class SoilLayerSummary:
|
|
100
|
+
"""Summary of a soil layer in a profile."""
|
|
101
|
+
|
|
102
|
+
layerID: str
|
|
103
|
+
index1Based: int
|
|
104
|
+
name: str
|
|
105
|
+
thickness: float
|
|
106
|
+
|
|
107
|
+
|
|
108
|
+
@dataclass(frozen=True)
|
|
109
|
+
class BedrockLayerSummary:
|
|
110
|
+
"""Summary of the bedrock layer in a profile."""
|
|
111
|
+
|
|
112
|
+
layerID: str
|
|
113
|
+
name: str
|
|
114
|
+
thickness: float
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
@dataclass(frozen=True)
|
|
118
|
+
class DeleteProfileResult:
|
|
119
|
+
"""Result of Profiles.deleteProfile()."""
|
|
120
|
+
|
|
121
|
+
deletedProfileName: str
|
|
122
|
+
activeProfileName: str
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
@dataclass(frozen=True)
|
|
126
|
+
class MotionInfo:
|
|
127
|
+
"""Ground motion entry for a project."""
|
|
128
|
+
|
|
129
|
+
name: str
|
|
130
|
+
filePath: str
|
|
131
|
+
isSelected: bool
|
|
132
|
+
|
|
133
|
+
|
|
134
|
+
@dataclass(frozen=True)
|
|
135
|
+
class MotionPairInfo:
|
|
136
|
+
"""Horizontal motion pair inferred from motion file naming."""
|
|
137
|
+
|
|
138
|
+
pairId: str
|
|
139
|
+
motionH1Name: str
|
|
140
|
+
motionH2Name: str
|
|
141
|
+
motionH1FilePath: str
|
|
142
|
+
motionH2FilePath: str
|
|
143
|
+
isSelected: bool
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
@dataclass(frozen=True)
|
|
147
|
+
class DeconvolutionLayerResultFiles:
|
|
148
|
+
"""Deconvolution output paths for one soil layer."""
|
|
149
|
+
|
|
150
|
+
layerIndex: int
|
|
151
|
+
layerMotionPath: str
|
|
152
|
+
layerMotionExists: bool
|
|
153
|
+
layerFasTransferFunctionPath: str
|
|
154
|
+
layerFasTransferFunctionExists: bool
|
|
155
|
+
|
|
156
|
+
|
|
157
|
+
@dataclass(frozen=True)
|
|
158
|
+
class ResultLayerSummary:
|
|
159
|
+
"""A profile layer that can be used with layer-scoped result queries."""
|
|
160
|
+
|
|
161
|
+
layerID: str
|
|
162
|
+
index1Based: int
|
|
163
|
+
name: str
|
|
164
|
+
isTopOfRock: bool
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
@dataclass(frozen=True)
|
|
168
|
+
class ResultMotionSummary:
|
|
169
|
+
"""A motion name in the compute-aligned result motion set."""
|
|
170
|
+
|
|
171
|
+
motionName: str
|
|
172
|
+
motionType: str
|
|
173
|
+
sourceMotionName: str
|
|
174
|
+
|
|
175
|
+
|
|
176
|
+
@dataclass(frozen=True)
|
|
177
|
+
class ResultDatabaseInfo:
|
|
178
|
+
"""Computed result file paths for one profile/motion pair."""
|
|
179
|
+
|
|
180
|
+
profileName: str
|
|
181
|
+
motionName: str
|
|
182
|
+
motionType: str
|
|
183
|
+
resultsFolderPath: str
|
|
184
|
+
resultDatabasePath: str
|
|
185
|
+
resultDatabaseExists: bool
|
|
186
|
+
complementaryResultDatabasePath: str
|
|
187
|
+
complementaryResultDatabaseExists: bool
|
|
188
|
+
inputFilePath: str
|
|
189
|
+
inputFileExists: bool
|
|
190
|
+
strainConvergencePath: str
|
|
191
|
+
strainConvergenceExists: bool
|
|
192
|
+
strainNonConvergenceIdPath: str
|
|
193
|
+
strainNonConvergenceExists: bool
|
|
194
|
+
deconvolutionBedrockMotionPath: str
|
|
195
|
+
deconvolutionBedrockMotionExists: bool
|
|
196
|
+
deconvolutionBedrockFasTransferFunctionPath: str
|
|
197
|
+
deconvolutionBedrockFasTransferFunctionExists: bool
|
|
198
|
+
deconvolutionLayerFiles: tuple[DeconvolutionLayerResultFiles, ...]
|
|
199
|
+
topOfRockOutputEnabled: bool = False
|
|
200
|
+
topOfRockLayerID: str = ""
|
|
201
|
+
topOfRockLayerIndex1Based: int = 0
|
|
202
|
+
|
|
203
|
+
|
|
204
|
+
@dataclass(frozen=True)
|
|
205
|
+
class InsertLayerResult:
|
|
206
|
+
"""Result of inserting or duplicating a soil layer."""
|
|
207
|
+
|
|
208
|
+
profileName: str
|
|
209
|
+
layerID: str
|
|
210
|
+
index1Based: int
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
@dataclass(frozen=True)
|
|
214
|
+
class AppendLayersResult:
|
|
215
|
+
"""Result of appending one or more soil layers."""
|
|
216
|
+
|
|
217
|
+
profileName: str
|
|
218
|
+
layerIDs: tuple[str, ...]
|
|
219
|
+
|
|
220
|
+
|
|
221
|
+
@dataclass(frozen=True)
|
|
222
|
+
class DeleteLayerResult:
|
|
223
|
+
"""Result of deleting a soil layer."""
|
|
224
|
+
|
|
225
|
+
profileName: str
|
|
226
|
+
deletedLayerID: str
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
@dataclass(frozen=True)
|
|
230
|
+
class MoveLayerResult:
|
|
231
|
+
"""Result of moving a soil layer."""
|
|
232
|
+
|
|
233
|
+
profileName: str
|
|
234
|
+
layerID: str
|
|
235
|
+
index1Based: int
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
@dataclass(frozen=True)
|
|
239
|
+
class GqHFittingLimits:
|
|
240
|
+
"""Optional G/Gmax and damping limits for curve fitting."""
|
|
241
|
+
|
|
242
|
+
enableModulusMin: bool = False
|
|
243
|
+
modulusMin: float = 0.0
|
|
244
|
+
enableModulusMax: bool = False
|
|
245
|
+
modulusMax: float = 0.0
|
|
246
|
+
enableStrengthMin: bool = False
|
|
247
|
+
strengthMin: float = 0.0
|
|
248
|
+
enableDampMin: bool = False
|
|
249
|
+
dampMin: float = 0.0
|
|
250
|
+
enableDampMax: bool = False
|
|
251
|
+
dampMax: float = 0.0
|
|
252
|
+
enableFixTheta3: bool = False
|
|
253
|
+
fixTheta3: float = 0.0
|
|
254
|
+
|
|
255
|
+
|
|
256
|
+
@dataclass(frozen=True)
|
|
257
|
+
class MeanProfileSummary:
|
|
258
|
+
"""Summary of the mean (representative) profile."""
|
|
259
|
+
|
|
260
|
+
profileName: str
|
|
261
|
+
layerCount: int
|
|
262
|
+
totalThickness: float
|
|
263
|
+
|
|
264
|
+
|
|
265
|
+
@dataclass(frozen=True)
|
|
266
|
+
class MeanProfileInsertLayerResult:
|
|
267
|
+
"""Result of inserting or duplicating a mean-profile soil layer."""
|
|
268
|
+
|
|
269
|
+
layerID: str
|
|
270
|
+
index1Based: int
|
|
271
|
+
|
|
272
|
+
|
|
273
|
+
@dataclass(frozen=True)
|
|
274
|
+
class MeanProfileAppendLayersResult:
|
|
275
|
+
"""Result of appending one or more mean-profile soil layers."""
|
|
276
|
+
|
|
277
|
+
layerIDs: tuple[str, ...]
|
|
278
|
+
|
|
279
|
+
|
|
280
|
+
@dataclass(frozen=True)
|
|
281
|
+
class MeanProfileDeleteLayerResult:
|
|
282
|
+
"""Result of deleting a mean-profile soil layer."""
|
|
283
|
+
|
|
284
|
+
deletedLayerID: str
|
|
285
|
+
|
|
286
|
+
|
|
287
|
+
@dataclass(frozen=True)
|
|
288
|
+
class MeanProfileMoveLayerResult:
|
|
289
|
+
"""Result of moving a mean-profile soil layer."""
|
|
290
|
+
|
|
291
|
+
layerID: str
|
|
292
|
+
index1Based: int
|
|
293
|
+
|
|
294
|
+
|
|
295
|
+
@dataclass(frozen=True)
|
|
296
|
+
class DynamicsPoint:
|
|
297
|
+
"""Dynamics curve point (strain, G/Gmax, damping, strength)."""
|
|
298
|
+
|
|
299
|
+
strain: float
|
|
300
|
+
ggmax: float
|
|
301
|
+
damping: float
|
|
302
|
+
strength: float
|
|
303
|
+
|
|
304
|
+
|
|
305
|
+
@dataclass(frozen=True)
|
|
306
|
+
class DiscretePoint:
|
|
307
|
+
"""Discrete curve point for Points soil model (strain, G/Gmax, damping)."""
|
|
308
|
+
|
|
309
|
+
strain: float
|
|
310
|
+
ggmax: float
|
|
311
|
+
damping: float
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: RSSeismicScripting
|
|
3
|
+
Version: 3.0.0
|
|
4
|
+
Summary: Client library for interacting with RSSeismic (DeepSoil) through Python
|
|
5
|
+
Author: Rocscience
|
|
6
|
+
License-Expression: MIT
|
|
7
|
+
Project-URL: Homepage, https://www.rocscience.com/software/rsseismic
|
|
8
|
+
Project-URL: Documentation, https://rocscience.github.io/rsseismic-scripting/
|
|
9
|
+
Keywords: Rocscience,RSSeismic,DeepSoil,Scripting,RocScript,Geotechnical,Seismic
|
|
10
|
+
Classifier: Programming Language :: Python :: 3
|
|
11
|
+
Classifier: Topic :: Scientific/Engineering
|
|
12
|
+
Requires-Python: >=3.9
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
License-File: License.txt
|
|
15
|
+
Requires-Dist: grpcio>=1.64.1
|
|
16
|
+
Requires-Dist: protobuf<6.0
|
|
17
|
+
Requires-Dist: pandas>=2.0
|
|
18
|
+
Requires-Dist: matplotlib>=3.7
|
|
19
|
+
Dynamic: license-file
|
|
20
|
+
|
|
21
|
+
## Introduction
|
|
22
|
+
|
|
23
|
+
This repo contains the reference manual for the RSSeismic scripting library. The RSSeismic scripting library is used to interact with the RSSeismic application through Python.
|
|
24
|
+
|
|
25
|
+
| Resource | Link |
|
|
26
|
+
|----------|------|
|
|
27
|
+
| **Reference manual (this site)** | https://rocscience.github.io/rsseismic-scripting/ |
|
|
28
|
+
| **PyPI package** | https://pypi.org/project/RSSeismicScripting/ |
|
|
29
|
+
| **RSSeismic release notes** | https://www.rocscience.com/support/rsseismic/release-notes |
|
|
30
|
+
| **Program downloads** | https://www.rocscience.com/support/program-downloads |
|
|
31
|
+
|
|
32
|
+
### Goal
|
|
33
|
+
|
|
34
|
+
Each function exposed corresponds to an equivalent operation you could have done through the UI.
|
|
35
|
+
Using this idea, the user should be able to edit models and get results without having to go through the UI at all.
|
|
36
|
+
Although only a limited set of functionality is exposed for now, the library covers the main scripting workflows. For a list of what is exposed in the current library, see [Exposed Functionality](#exposed-functionality).
|
|
37
|
+
|
|
38
|
+
### Python UI equivalents
|
|
39
|
+
|
|
40
|
+
Events and workflows done in the UI will have equivalents in the Python library.
|
|
41
|
+
Wherever a dialog is shown in the UI, there will be an equivalent class with methods that mimic the dialog's behavior.
|
|
42
|
+
Wherever a warning or error dialog is displayed, an exception will be thrown, or a warning will be displayed in Python instead.
|
|
43
|
+
Wherever you can select and manipulate an entity, identifiers can be used in the library to get references to those entities in Python and objects will be constructed to help you interface with them.
|
|
44
|
+
|
|
45
|
+
### How it works
|
|
46
|
+
|
|
47
|
+
Each function in the library is a wrapper to make an API call to the application.
|
|
48
|
+
Objects retrieved through function calls will often not contain any data themselves, but will instead be proxies, allowing you to get information from the objects in the application.
|
|
49
|
+
For this reason, debugging will sometimes be tricky, as not all data will always be available for you to inspect unless you get it and assign it to a variable yourself.
|
|
50
|
+
|
|
51
|
+
### Warnings
|
|
52
|
+
|
|
53
|
+
References can be *invalidated* whenever the corresponding object in the application is destroyed or reloaded. You will need to watch out for expired references and renew them when needed as it can cause crashes or incorrect results if not managed properly.
|
|
54
|
+
|
|
55
|
+
## Exposed Functionality
|
|
56
|
+
|
|
57
|
+
The library exposes a focused set of RSSeismic workflows through Python. In this version you can:
|
|
58
|
+
|
|
59
|
+
- **Application connection**: Launch RSSeismic with the scripting server (`startApplication`), connect on a port, `ping`, open `.rsseismicfile` projects, create blank projects, adjust `maxConcurrentAnalyses`, run **batch compute** across many project files, and close the client connection.
|
|
60
|
+
|
|
61
|
+
- **Project lifecycle (`Model`)**: Save, save as, close, **run compute** (with optional timeout and partial-success handling), clear results, and automatic profile **generate** / **reset** when that feature is enabled on the project.
|
|
62
|
+
|
|
63
|
+
- **Profiles (`model.Profiles`)**: List, create, copy, delete, and rename profiles; active profile; list soil layers and bedrock; output depths; get **SoilLayer** / **BedrockLayer** property proxies.
|
|
64
|
+
|
|
65
|
+
- **Profile layer CRUD (`model.SoilLayers`)**: Insert, append, delete, duplicate, and move soil layers on the active profile.
|
|
66
|
+
|
|
67
|
+
- **Mean profile (`model.MeanProfile`)**: Structure CRUD on the automatic-generation template; **MeanProfileSoilLayer** properties including vary-with-depth shear wave / shear strength tables and **ReferenceCurve** (without auto-generate on template layers).
|
|
68
|
+
|
|
69
|
+
- **Profile generation settings (`model.ProfileGenerationSettings`)**: Typed getters/setters for randomization, profile count, and related generation parameters.
|
|
70
|
+
|
|
71
|
+
- **Project settings (`model.ProjectSettings`)**: Typed project properties (analysis mode, solver, motions configuration, automatic profile generation, etc.), plus **unit system** get/change.
|
|
72
|
+
|
|
73
|
+
- **Ground motions (`model.Motions`)**: Motion directory preferences (add/remove/list), refresh project motion list, **uni-directional** motion list/selection or **bi-directional** pair list/selection, select-all and per-directory select/deselect.
|
|
74
|
+
|
|
75
|
+
- **Layer properties**: **SoilLayer** (thickness, soil model, unit weight, …), **ReferenceCurve** (curve model, points, generate reference curve on profile layers), **SoilLayerCurve** (dynamics, discrete points, **curve fit** via `FittingProcedureModel`), **BedrockLayer** on realized profiles.
|
|
76
|
+
|
|
77
|
+
- **Results (`model.Results`)**: Result paths and database metadata; compute-aligned motion/layer discovery; **pandas DataFrames** for profile/layer time histories, profile summaries, result series (`ResultSeriesKind`), strain convergence, and real-time displacement; bulk fetch helpers for many motions/layers.
|
|
78
|
+
|
|
79
|
+
- **Public types and enums**: Summary dataclasses (`ProfileSummary`, `MotionInfo`, `ResultDatabaseInfo`, …), `ResultSeriesKind`, `ResultMotionType`, `UnitSystem`, and property enums under `rsseismic.enums` (for example `SoilModel`, `AnalysisMode`, `InputMotionConfiguration`, `FittingProcedureModel`).
|
|
80
|
+
|
|
81
|
+
RPC failures raise **`ScriptingError`**. Some successful RPCs carry advisory text in `errorMessage`; the client logs those as **warnings** (for example duplicate motion directory add).
|
|
82
|
+
|
|
83
|
+
For method-level detail, use the [Scripting reference manual](https://rocscience.github.io/rsseismic-scripting/) (API reference and example scripts).
|
|
84
|
+
|
|
85
|
+
## Getting Started
|
|
86
|
+
|
|
87
|
+
- **Tutorials and workflows (Rocscience Help):** https://www.rocscience.com/help/rsseismic/tutorials/
|
|
88
|
+
- **Product documentation:** https://www.rocscience.com/help/rsseismic/documentation/
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
rsseismic/Application.py,sha256=LWugSIw0jbwtjIxN-Xq60CoEuqfWSJPfXBppoDzGBrc,7874
|
|
2
|
+
rsseismic/ApplicationManager.py,sha256=fYpy1MOhFUi31DnkzydIAC0MQl2nLtB-R8gGgeLBbvg,3845
|
|
3
|
+
rsseismic/BedrockLayer.py,sha256=FeClVD3odX8HUnW3RpulvemYYtYacuKfnLJC7E5ehSw,1246
|
|
4
|
+
rsseismic/MeanProfile.py,sha256=u5m4BC4FfN6k6SS_iiI6HO5kSv5rvIA588KOAL7mi6c,7190
|
|
5
|
+
rsseismic/MeanProfileSoilLayer.py,sha256=SdP-qOHpzBDNSFZ2AWVldeKiF0Wgl2Qmn-g6jCix-7w,5406
|
|
6
|
+
rsseismic/Model.py,sha256=fBgAy4AdGZcrAd_w6yrsoMamkHfKGRCG0mp4PNHMU5I,7875
|
|
7
|
+
rsseismic/Motions.py,sha256=WK6tX8B8YL4JuDSGXKa9hbGZwXxVzXg2HeTslwTUyBs,7053
|
|
8
|
+
rsseismic/ProfileGenerationSettings.py,sha256=LCTbbebqzdp9TUNXSiqB73ar_qgmfotwye2XyAA03Lc,1417
|
|
9
|
+
rsseismic/Profiles.py,sha256=Qm1RRXVQQUK_0hqKxV8Qtyfc9bjnVJ2SuO12rwQj070,7494
|
|
10
|
+
rsseismic/ProjectSettings.py,sha256=4KwfZ8Y5pQkZ45IeRkMFU6uwsIj6VlXBbvUzsie_J8U,2407
|
|
11
|
+
rsseismic/ReferenceCurve.py,sha256=sQXPpk5r_ujrAJcHvZlI5EAKkaw26BAVszlMm7KV_zY,3526
|
|
12
|
+
rsseismic/Results.py,sha256=pRaMg1kNgkRQfuTCECR1APMcmL3Ox3-QAhKUV9sTiuk,17113
|
|
13
|
+
rsseismic/SoilLayer.py,sha256=OC8G86X0KYvfDBHamtrwETzymyRroj8YYOku0mQaDTA,1594
|
|
14
|
+
rsseismic/SoilLayerCurve.py,sha256=pubtO6ZMd7A78lmpVpgwXcaLZiASoss9DafNujG14iI,5133
|
|
15
|
+
rsseismic/SoilLayerOperations.py,sha256=UJJYvR0VovA2Gxu5kJKjyG0rLeR3AfnwnS0xQYy0yhQ,4582
|
|
16
|
+
rsseismic/__init__.py,sha256=m6gp_Qefvuo21XnI5yNiwOEyTW7G6FlOdcroHmXqmj4,1991
|
|
17
|
+
rsseismic/_application_paths.py,sha256=aeQUxMQORkmeqnLubeereiSxrLZKglXS6ceyuysF7Qk,2287
|
|
18
|
+
rsseismic/_batch_compute.py,sha256=pOZAMvbAq2kC-GHAB6MNsfh6MkZJzavXsYg3pDWOGp4,12872
|
|
19
|
+
rsseismic/_client.py,sha256=CQ_VVbY08t-Li7Zh7YAIcwTqEU_3aVUuOdjtlTSzx68,2742
|
|
20
|
+
rsseismic/_proto_converters.py,sha256=W_BocDvpvTfqOEHUhxwsdqDcdgeUWZW6pSh_HzaGhUc,11182
|
|
21
|
+
rsseismic/_proxyObject.py,sha256=6NH_FqpkUuelF_SkHVwaAB_npV6ZvCY-AOP7UPav9GI,278
|
|
22
|
+
rsseismic/_result_bulk_dataframes.py,sha256=L5U5lXTRX9SHfdOW1Rt31wBmHliqJ0J6yDBZGz_-45E,6542
|
|
23
|
+
rsseismic/_result_dataframes.py,sha256=RlFtTQ-LvtAB_rfgLtr_Hulahy_fvYMQoD4z2EUMric,2626
|
|
24
|
+
rsseismic/_rpc_helpers.py,sha256=JapTRnW4jMo6WUo6qpRGliDOaRlS1LjwcAhofOp90vo,2159
|
|
25
|
+
rsseismic/exceptions.py,sha256=pvoifO0IcjOmDpw4xkKy64XjvBi4qZssf0uwd2Obse0,325
|
|
26
|
+
rsseismic/types.py,sha256=xBBRBW3js2CHKjcy2KWGrRzWiybT8F_I3TLBcPAjPvw,7084
|
|
27
|
+
rsseismic/enums/__init__.py,sha256=_JBMvszt6v2y7F06N6zf25wNJO6dHIOzOjaWtRbjdVo,586
|
|
28
|
+
rsseismic/enums/_generated.py,sha256=PQwdJZQu9JblMLTPRRfMt_Ztftsug8vFt81ZaURoTkM,3807
|
|
29
|
+
rsseismic/enums/fitting_procedure.py,sha256=3txxvTYmw3krbedMEAlysoBF4_JWVb3I1iGIC9O4e2Y,360
|
|
30
|
+
rsseismic/generatedFiles/ApplicationService_pb2.py,sha256=I7pHLGoFRGfFw70KmHpeNqv37uqN1OF1SVw2sOkoBdo,3748
|
|
31
|
+
rsseismic/generatedFiles/ApplicationService_pb2.pyi,sha256=-GHiKaDoxR3EPmC_bIoMfbJU299g5x2JTugUW3c3Vw8,2517
|
|
32
|
+
rsseismic/generatedFiles/ApplicationService_pb2_grpc.py,sha256=oHq_UJEuujNlXk9sU0CL3vCm4ebA6sBOD5B3GT_v5wQ,11405
|
|
33
|
+
rsseismic/generatedFiles/BedrockLayerDataService_pb2.py,sha256=QOMULn9SDOn78-QH75zbYG2Nl6WtIMVDqevFImFYOrQ,1629
|
|
34
|
+
rsseismic/generatedFiles/BedrockLayerDataService_pb2.pyi,sha256=pvrDKLUvXQf8cSlwLxVR70z9czCSdnkVb3ZNu-Gu6OE,184
|
|
35
|
+
rsseismic/generatedFiles/BedrockLayerDataService_pb2_grpc.py,sha256=M5l73DhDcrUW3Zay_EWyngJhYZthrfZReuLr0HiZqrE,9438
|
|
36
|
+
rsseismic/generatedFiles/CommonMessages_pb2.py,sha256=rvrQ2M_gj4fUDdgeTxZvsa16pvfEa0_vdUwKN5sFL8w,4158
|
|
37
|
+
rsseismic/generatedFiles/CommonMessages_pb2.pyi,sha256=sKBtSGx_ypNUR8Meguz_RJ1Bu6FflIUcy-fSBJaoAbE,4889
|
|
38
|
+
rsseismic/generatedFiles/CommonMessages_pb2_grpc.py,sha256=rNITCNZ87L5k5LiyMBospoC4sDPJv7wzCQu_2Jt98yA,1131
|
|
39
|
+
rsseismic/generatedFiles/MeanProfileService_pb2.py,sha256=gwxfN2Re3CBng8nSsYjcrJmyLfEKNmB4nwfsIorC3bA,7054
|
|
40
|
+
rsseismic/generatedFiles/MeanProfileService_pb2.pyi,sha256=XFoI5qH8Lihj86XRxtxbVM0-kmvn4I-kwHJ2xSqO-iU,7562
|
|
41
|
+
rsseismic/generatedFiles/MeanProfileService_pb2_grpc.py,sha256=Ept9-a53xRdxTyj3A6Q-EPJ2mGqdWIcA6r9xtMSZjis,19587
|
|
42
|
+
rsseismic/generatedFiles/MeanProfileSoilLayerDataService_pb2.py,sha256=uyjbx9mT_yeEpe102tFgfrZqvyO3lv9mEAORDFyis3g,4835
|
|
43
|
+
rsseismic/generatedFiles/MeanProfileSoilLayerDataService_pb2.pyi,sha256=skJQ4hR6RrRkYc0UwCluJvNP5aS7HZveJrvKAwk0pzU,4005
|
|
44
|
+
rsseismic/generatedFiles/MeanProfileSoilLayerDataService_pb2_grpc.py,sha256=4u7dRhXmz98SY5GdYAnfQ1l5A-WStLydYm3irIjl2fo,16663
|
|
45
|
+
rsseismic/generatedFiles/ModelService_pb2.py,sha256=K7ZCNrs8QgDr1pLLKdmL7YF3hyp2p-quXphhHggZJ0Q,5056
|
|
46
|
+
rsseismic/generatedFiles/ModelService_pb2.pyi,sha256=5De3QXZBISzOLaRZbIm3eaToptmV6Rtpt7eeJWglJ-s,5002
|
|
47
|
+
rsseismic/generatedFiles/ModelService_pb2_grpc.py,sha256=YIv4Zb_JccEu2GCym_sm0RNiRLhGYogVC8DlKSD38eQ,14344
|
|
48
|
+
rsseismic/generatedFiles/MotionService_pb2.py,sha256=b0Z9cYvxwyJxUP0qGLBdaR_gb9TYNNKsp5zzWUlVDB8,9550
|
|
49
|
+
rsseismic/generatedFiles/MotionService_pb2.pyi,sha256=7n3MTBZsjbHJpHGrD7z3ce2_ob66iy3rCvmHV1IkPEI,9745
|
|
50
|
+
rsseismic/generatedFiles/MotionService_pb2_grpc.py,sha256=hh2aaRQ7QpnRoIiPhLr5wy_AjVclnnGVpJBMbYCmZiA,24642
|
|
51
|
+
rsseismic/generatedFiles/ProfileGenerationSettingsService_pb2.py,sha256=OEWM_iohaxLKIJwtklAui2KJWwW1RD58l_pTxs80ivw,1451
|
|
52
|
+
rsseismic/generatedFiles/ProfileGenerationSettingsService_pb2.pyi,sha256=pvrDKLUvXQf8cSlwLxVR70z9czCSdnkVb3ZNu-Gu6OE,184
|
|
53
|
+
rsseismic/generatedFiles/ProfileGenerationSettingsService_pb2_grpc.py,sha256=TsBeBlkb-SfJJAbh6HVjwB-rhsmIwiz58XZZVRy5FFs,5923
|
|
54
|
+
rsseismic/generatedFiles/ProfileService_pb2.py,sha256=rot-9TJN_ih7D9vg8oi6KKEAfbfnhY-ZiPeJjYpnCK8,9265
|
|
55
|
+
rsseismic/generatedFiles/ProfileService_pb2.pyi,sha256=4DODhx4ctP1cO-A_yCgAxT2W4nK1umnAzSklPIpC29A,10774
|
|
56
|
+
rsseismic/generatedFiles/ProfileService_pb2_grpc.py,sha256=WKblYFVh_IbXJ9tAmDoWpM5LWb0GmEK3C88o6P5CvoI,22158
|
|
57
|
+
rsseismic/generatedFiles/ProjectSettingsDataService_pb2.py,sha256=pcvhyjsKU5oVIxjM8AA6biOYj8RDIzGl73Zjqi9jLtI,2705
|
|
58
|
+
rsseismic/generatedFiles/ProjectSettingsDataService_pb2.pyi,sha256=TjGzNG8s8mJTb07U8mAY4_hKxOLxCDR_4j7OXzArGUs,1583
|
|
59
|
+
rsseismic/generatedFiles/ProjectSettingsDataService_pb2_grpc.py,sha256=aZo-3gJbog2ORRZHM9PMnku6l8GxUoBAZuVxokC-cis,9791
|
|
60
|
+
rsseismic/generatedFiles/ReferenceCurveDataService_pb2.py,sha256=LX0h9iUGIQKHVTPmM7yeWT5LFZ4S8EDKPSOrkKZaIEs,4047
|
|
61
|
+
rsseismic/generatedFiles/ReferenceCurveDataService_pb2.pyi,sha256=Ef4jlIw4ofTcj6g6MlWYcD81Y6_zXgOIowYKCrPn3u4,3320
|
|
62
|
+
rsseismic/generatedFiles/ReferenceCurveDataService_pb2_grpc.py,sha256=1-0PdmH1WL_PGErdJB5AgR6incQl8aRurIQEm3r480k,12411
|
|
63
|
+
rsseismic/generatedFiles/ResultsService_pb2.py,sha256=y2A8fE6xKaSypPPCycNwYZGM7kCB9p4TKzykbE5PODs,13352
|
|
64
|
+
rsseismic/generatedFiles/ResultsService_pb2.pyi,sha256=Xf72Dj-272j3GCUHcnxcKdqapfoSfwtMsC2l7FcaAj8,19484
|
|
65
|
+
rsseismic/generatedFiles/ResultsService_pb2_grpc.py,sha256=uMjuAeFEvb1LJdDiC8El7OF8ClshPwz-5gGyho3_9IE,21064
|
|
66
|
+
rsseismic/generatedFiles/SoilLayerCurveDataService_pb2.py,sha256=lGTsdwwoeFEamwmsZJ9ztqz-Zf5Ec4oIDuVI48hiMY4,6218
|
|
67
|
+
rsseismic/generatedFiles/SoilLayerCurveDataService_pb2.pyi,sha256=wbjVjwOfXtDdwLRqKzhrfAyIk6-_VCh1V_3gZiKP2g8,7180
|
|
68
|
+
rsseismic/generatedFiles/SoilLayerCurveDataService_pb2_grpc.py,sha256=hx0o-EDasdhWcrxKfDKED8FOIFzK9kPhc9H2fkJxUXI,12039
|
|
69
|
+
rsseismic/generatedFiles/SoilLayerDataService_pb2.py,sha256=_CNd6m7kUMgz5bqev8hoy0QeFPO7UrQS6agJs2yYkf8,1593
|
|
70
|
+
rsseismic/generatedFiles/SoilLayerDataService_pb2.pyi,sha256=pvrDKLUvXQf8cSlwLxVR70z9czCSdnkVb3ZNu-Gu6OE,184
|
|
71
|
+
rsseismic/generatedFiles/SoilLayerDataService_pb2_grpc.py,sha256=7WTa3dXMlLRWfRoxwlMebG9vQXc3S6pRfDaCD_6Iu28,9363
|
|
72
|
+
rsseismic/generatedFiles/SoilLayerService_pb2.py,sha256=SRRw61o7cqO351dI1b0h60KnE9o0pzHt_eBhRiWcBho,4855
|
|
73
|
+
rsseismic/generatedFiles/SoilLayerService_pb2.pyi,sha256=6mKKJBINEi_xBFqVEMgf92yuC3AYZj7-Yiq2ALk_qr8,5532
|
|
74
|
+
rsseismic/generatedFiles/SoilLayerService_pb2_grpc.py,sha256=6CQy53fJu4qYzLSJPDAAp4D3D2mlVFq4QL1ySX7kZsg,13018
|
|
75
|
+
rsseismic/generatedFiles/__init__.py,sha256=-tk1eG9ej62htUNZbCA137mI-Tx5D71YJ2NYk7nQKFo,85
|
|
76
|
+
rsseismic/properties/_PropertyAccessor.py,sha256=lJRDYVA93PpxserTA0bCBztySH8Q2VYnEC6si5sWG14,6497
|
|
77
|
+
rsseismic/properties/__init__.py,sha256=awSzYvrvpAP4BCRaojaGzG1zY_uy3M1sWs89krprRRk,177
|
|
78
|
+
rsseismic/properties/bedrockLayer/__init__.py,sha256=jfowXwkyzV2VARO9-iOGecRSiGIUt1Zy9Aethem-5BU,42
|
|
79
|
+
rsseismic/properties/bedrockLayer/_generated.py,sha256=Eh7m9uQHy3_nwPZgwad21I3onGQyhqCmZ8Vzo-IotkU,5236
|
|
80
|
+
rsseismic/properties/meanProfileSoilLayer/__init__.py,sha256=EpfYePJWsu9nFUlGVIOlpbtXaREG9wljeQ8riM9v5Ag,71
|
|
81
|
+
rsseismic/properties/meanProfileSoilLayer/_generated.py,sha256=WDbJYMgX2CTMyCfukolDpPisbgpYwi03Go3jLkpla8c,4036
|
|
82
|
+
rsseismic/properties/profileGenerationSettings/__init__.py,sha256=VHxd5Sd9e6NJsYRGDkBPxZFviFSo7UjckxF84i2xKAI,74
|
|
83
|
+
rsseismic/properties/profileGenerationSettings/_generated.py,sha256=zaZYy-YIYhY68kcVsAdrUvCxF-65QJBEv2oipZ7y7uk,8415
|
|
84
|
+
rsseismic/properties/projectSettings/__init__.py,sha256=jfowXwkyzV2VARO9-iOGecRSiGIUt1Zy9Aethem-5BU,42
|
|
85
|
+
rsseismic/properties/projectSettings/_generated.py,sha256=SlwFWQYL0OvRWUFFhHVSr2KzVUlZqAgM95kE4-xKXuE,14161
|
|
86
|
+
rsseismic/properties/referenceCurve/__init__.py,sha256=jfowXwkyzV2VARO9-iOGecRSiGIUt1Zy9Aethem-5BU,42
|
|
87
|
+
rsseismic/properties/referenceCurve/_generated.py,sha256=dV-OOtbSg5Uf4_RPlaKKqCNCxbsAyiGjTn0mDgAXypE,9306
|
|
88
|
+
rsseismic/properties/soilLayer/__init__.py,sha256=jfowXwkyzV2VARO9-iOGecRSiGIUt1Zy9Aethem-5BU,42
|
|
89
|
+
rsseismic/properties/soilLayer/_generated.py,sha256=N64FZAiSUSBwveib2YovYn9AxIPBR07u48UREHPnhBM,19449
|
|
90
|
+
rsseismicscripting-3.0.0.dist-info/licenses/License.txt,sha256=mnil8MmAn26npU3T5V9nDsV21QyBGWj5Fxd8Rqx9jIs,1059
|
|
91
|
+
rsseismicscripting-3.0.0.dist-info/METADATA,sha256=r4N6t0ATBkEg2h5KaI1lr_owHT7rU2UeDu5kCU4DKiU,6421
|
|
92
|
+
rsseismicscripting-3.0.0.dist-info/WHEEL,sha256=K260EYznzXsJYBQGqmI8VTxEdiZYNvDZwW9cBh9-_MA,91
|
|
93
|
+
rsseismicscripting-3.0.0.dist-info/top_level.txt,sha256=mu-G3nc2Jjv4jdFcUKdX694hse6y4Ji_9IJonYGORXo,10
|
|
94
|
+
rsseismicscripting-3.0.0.dist-info/RECORD,,
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2026 Rocscience Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
rsseismic
|