iam-git / WellMet (public) (License: MIT) (since 2021-08-31) (hash sha1)
WellMet is pure Python framework for spatial structural reliability analysis. Or, more specifically, for "failure probability estimation and detection of failure surfaces by adaptive sequential decomposition of the design domain".
List of commits:
Subject Hash Author Date (UTC)
wireframe: add convex_slice() method efada4c62f88b6106c687217472e0b8c52374fed I am 2022-11-13 19:51:49
qt_gui.qt_pairwise.ContactWidget: finish widget and clean up 10753a104879d6b9c109735e959b18b5a60a4616 I am 2022-11-10 05:02:01
wireframe: finish and clean up module. implement DirectContact. f7ff9c02f25a3ed8fe04e99036da69766afa5a49 I am 2022-11-10 04:58:58
qt_gui.qt_pairwise.ContactWidget: implement Qhull check e362df1f8b87ab7c6a27643cd6f4091b9caec9a3 I am 2022-11-09 21:35:10
wireframe: add Qframe class cf52d85dd1663537cd8c52a98514c7d041913979 I am 2022-11-09 21:34:12
qt_gui.qt_pairwise: add auto arnge and auto levels controls 9bc2cf10a9a1695c2c1a5f6a9959f375d3808a71 I am 2022-11-09 18:16:47
qt_gui.qt_pairwise: set blue -1 by default. Add force_update option in Contact widget 7371575784df7fd41bd76ad29caf38f474a06a26 I am 2022-11-09 15:39:03
qt_gui.qt_pairwise: prepare Contact widget bfa78d7493f5eb04b6bd3a4ad26dd1a92d17a895 I am 2022-11-09 03:36:05
qt_gui.qt_pairwise: prepare more mouse event signals c60e613508480c68483b3d0d6ad6c876b27f539c I am 2022-11-08 01:55:14
qt_gui: introduce reworked matrix view window e28b95c5f418a7a3cea0cb84ca82b40275a71061 I am 2022-11-07 02:20:45
introduce wireframe module for the contacts finding functionality b6068dd92663699859ea7cbf3aac00178d120e0f I am 2022-10-25 14:24:37
voronoi.TwoPoints: atleast_2d() one line fix 9f8bd9e5370ccf30887b6218331ee664788a3b91 I am 2022-10-25 07:09:57
voronoi: implement faster TwoPoints class. c0af78f64bc78a6b8cf06e3ea244339549318b66 I am 2022-10-24 13:03:26
voronoi: implement TwoHorses class. Třída je, bohužel, bezcenná :( 4f6fe186f3f344fa7ee9e518798499099615b466 I am 2022-10-23 10:00:43
voronoi: WIP 23c63ede5bc2ec51d25aed850dc59299db438e34 I am 2022-10-21 12:27:01
IS_stat.sample_alike: use any possible fallback options to sample 80fb6d086e9f17350a1725a319e40bf29591869e I am 2022-10-20 08:56:42
voronoi: WIP ba912d406de12142f2e15a73090118184a0166a4 I am 2022-10-20 02:43:12
IS_stat: add sample_alike() function 2e5394d264b7aaaf5f2486c736ed8cc37afbd030 I am 2022-10-19 13:00:17
voronoi: WIP c3bfa60b6db2042df11528fe95a51d7cc88d3c6b I am 2022-10-19 11:18:13
voronoi: WIP baff3c5ccaf857f60194917fe5d6e33c40b01265 I am 2022-10-19 09:28:33
Commit efada4c62f88b6106c687217472e0b8c52374fed - wireframe: add convex_slice() method
Author: I am
Author date (UTC): 2022-11-13 19:51
Committer name: I am
Committer date (UTC): 2022-11-13 19:51
Parent(s): 10753a104879d6b9c109735e959b18b5a60a4616
Signer:
Signing key:
Signing status: N
Tree: ad531886e7a307f534f6e2c8c1a3dd5f6a8eb4d4
File Lines added Lines deleted
wellmet/wireframe.py 93 2
File wellmet/wireframe.py changed (mode: 100644) (index 2c83232..ebab43c)
... ... def convex_sprite(X, couple_indices, tries_to_fix=1, tol=1e-7):
341 341 i, j = couple_indices i, j = couple_indices
342 342 __nsim, ndim = X.shape __nsim, ndim = X.shape
343 343
344 baseline = X[j] - X[i]
345
346 344 # sprite does not mean anything. Just a word # sprite does not mean anything. Just a word
347 345 #č místo vyslovéné bazi budeme vektory ukladat do #č místo vyslovéné bazi budeme vektory ukladat do
348 346 #č jakési obecné matici #č jakési obecné matici
 
... ... def convex_sprite(X, couple_indices, tries_to_fix=1, tol=1e-7):
411 409
412 410
413 411
412 def get_longest(O, A, B):
413 a_i = O - A
414 a_j = O - B
415 if np.inner(a_i[:-1], a_i[:-1]) > np.inner(a_j[:-1], a_j[:-1]):
416 return a_i
417 else:
418 return a_j
419
420
421 def convex_slice(X, couple_indices, tries_to_fix=1, tol=1e-7):
422 i, j = couple_indices
423 nsim, ndim = X.shape
424
425 mask = np.full(nsim, True)
426 mask[[i, j]] = False
427
428 #č jako indice zkusme použit bod na usečce uprostřed mezí vzorky
429 #
430 #č všechy souřadnice jsou dány radius-vektorem od středu,
431 #č ale poslední souřadnice je to naše zvednutí,
432 #č kde bychom mohli zkusit dát korrektnější směr.
433 #č Mně humpolackými uvahami o tečně paraboly
434 #č na caru paríru vyšlo něco jako
435 #č že stačí dát poslední složku 0,5.
436 #č Jakože čím je roloměr větší,
437 #č tím je "svislá" složka automaticky měnší.
438 #č Jakože netřeba ani normalizovat, ani nic "složitě" počítat
439 half_point = np.mean(X[[i, j]], axis=0)
440 half_point[-1] = -0.5
441
442 b = get_offsets(half_point, X)
443 if (np.max(b[mask]) - np.min(b[[i, j]])) < tol:
444 return True
445
446 #č nepovedlo. Tak deme na věc
447 idxs = []
448
449 # sprite does not mean anything. Just a word
450 #č místo vyslovéné bazi budeme vektory ukladat do
451 #č jakési obecné matici
452 sprite = np.empty((ndim + tries_to_fix, ndim))
453 baseline = X[j] - X[i]
454 sprite[-2] = baseline
455 sprite[-1] = half_point
456
457
458
459 for dim in range(1, ndim-1):
460 basis, __ = np.linalg.qr(sprite[-dim-1:].T)
461
462 # get constrain
463 a = basis[:, -1]
464 b = get_offsets(a, X)
465 #č u kontrol musím taky hlídat, aby argmax nebyl i, nebo j
466 if (np.max(b[mask]) - np.max(b[[i, j]])) < tol:
467 print(idxs)
468 return True
469
470 #else:
471 idx = np.argmax(b)
472 idxs.append(idx)
473 sprite[-dim-1] = get_longest(X[idx], X[i], X[j])
474 sprite[-dim-2] = baseline
475
476
477 #č tady máme
478 #č sprite[-ndim+1] = nějaký vektor
479 #č sprite[-ndim] = baseline
480
481 for t in range(tries_to_fix):
482 basis, __ = np.linalg.qr(sprite[-ndim-t:].T)
483 # get constrain
484 a = basis[:, -1]
485 b = get_offsets(a, X)
486 #č u kontrol musím taky hlídat, aby argmax nebyl i, nebo j
487 if (np.max(b[mask]) - np.max(b[[i, j]])) < tol:
488 print(idxs)
489 return True
490 idx = np.argmax(b)
491 idxs.append(idx)
492 sprite[-ndim-t] = get_longest(X[idx], X[i], X[j])
493 sprite[-ndim-1-t] = baseline
494
495 assert (sprite[0] == baseline).all()
496
497 basis, __ = np.linalg.qr(sprite.T)
498 a = basis[:, -1]
499 b = get_offsets(a, X)
500 print(idxs)
501 return (np.max(b[mask]) - np.min(b[[i, j]])) < tol
502
503
504
414 505
415 506
416 507
Hints:
Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://rocketgit.com/user/iam-git/WellMet

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@ssh.rocketgit.com/user/iam-git/WellMet

Clone this repository using git:
git clone git://git.rocketgit.com/user/iam-git/WellMet

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a merge request:
... clone the repository ...
... make some changes and some commits ...
git push origin main