Skip to content

Commit 06eff33

Browse files
committed
add load_vector from full
1 parent 229277e commit 06eff33

File tree

3 files changed

+35
-11
lines changed

3 files changed

+35
-11
lines changed

pyansys/common.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def read_record(self, pointer, return_bufsize=False):
7979
Parameters
8080
----------
8181
pointer : int
82-
ANSYS file position (n words from start of file. A word
82+
ANSYS file position (n words from start of file). A word
8383
is four bytes.
8484
8585
return_bufsize : bool, optional

pyansys/full.py

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,6 @@ def load_km(self, as_sparse=True, sort=False):
236236
raise ImportError('Unable to load scipy, use ``load_km`` with '
237237
'``as_sparse=False``')
238238

239-
# Get header details
240-
neqn = self._header['neqn'] # Number of equations
241-
242239
# number of terms in stiffness matrix
243240
ntermK = two_ints_to_long(self._header['ntermKl'], self._header['ntermKh'])
244241

@@ -272,7 +269,7 @@ def load_km(self, as_sparse=True, sort=False):
272269
krow, kcol, kdata = _binary_reader.read_array(self.filename,
273270
ptrSTF,
274271
ntermK,
275-
neqn,
272+
self.neqn,
276273
const)
277274
else:
278275
warnings.warn('Missing stiffness matrix')
@@ -282,7 +279,7 @@ def load_km(self, as_sparse=True, sort=False):
282279
mrow, mcol, mdata = _binary_reader.read_array(self.filename,
283280
ptrMAS,
284281
ntermM,
285-
neqn,
282+
self.neqn,
286283
const)
287284
else:
288285
warnings.warn('Missing mass matrix')
@@ -305,7 +302,8 @@ def load_km(self, as_sparse=True, sort=False):
305302

306303

307304
# sort nodal equivalence
308-
dof_ref, index, nref, dref = _binary_reader.sort_nodal_eqlv(neqn, neqv, ndof)
305+
dof_ref, index, nref, dref = _binary_reader.sort_nodal_eqlv(self.neqn,
306+
neqv, ndof)
309307

310308
# store constrained dof information
311309
unsort_dof_ref = np.vstack((nref, dref)).T
@@ -339,7 +337,7 @@ def load_km(self, as_sparse=True, sort=False):
339337
if as_sparse:
340338

341339
if kdata is not None:
342-
k = coo_matrix((neqn,) * 2)
340+
k = coo_matrix((self.neqn,) * 2)
343341
k.data = kdata # data has to be set first
344342
k.row = krow
345343
k.col = kcol
@@ -350,7 +348,7 @@ def load_km(self, as_sparse=True, sort=False):
350348
k = None
351349

352350
if mdata is not None:
353-
m = coo_matrix((neqn,) * 2)
351+
m = coo_matrix((self.neqn,) * 2)
354352
m.data = mdata
355353
m.row = mrow
356354
m.col = mcol
@@ -362,19 +360,41 @@ def load_km(self, as_sparse=True, sort=False):
362360

363361
else:
364362
if kdata is not None:
365-
k = np.zeros((neqn,) * 2)
363+
k = np.zeros((self.neqn,) * 2)
366364
k[krow, kcol] = kdata
367365
else:
368366
k = None
369367

370368
if mdata is not None:
371-
m = np.zeros((neqn,) * 2)
369+
m = np.zeros((self.neqn,) * 2)
372370
m[mrow, mcol] = mdata
373371
else:
374372
m = None
375373

376374
return dof_ref, k, m
377375

376+
@property
377+
def neqn(self):
378+
"""Number of equations
379+
380+
Examples
381+
--------
382+
>>> full.neqn
383+
963
384+
"""
385+
return self._header['neqn']
386+
387+
@property
388+
def load_vector(self):
389+
"""The load vector
390+
391+
Examples
392+
--------
393+
>>> full.load_vector
394+
array([0., 0., 0., ..., 0., 0., 0.])
395+
"""
396+
return self.read_record(self._header['ptrRHS'])[:self.neqn]
397+
378398
def _load_km(self):
379399
"""Loads the matrices with sorted DOF"""
380400
self._dof_ref, self._k, self._m = self.load_km(sort=True)

tests/test_full.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,7 @@ def test_full_load_km(sparse_full):
6363

6464
# make sure internal values are not overwritten
6565
assert (np.diff(sparse_full.dof_ref[:, 0]) >= 0).all()
66+
67+
68+
def test_load_vector(sparse_full):
69+
assert not sparse_full.load_vector.any()

0 commit comments

Comments
 (0)