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)
dicebox.circumtri: calculate event's radia c6868cfbde7c8a86b73217da544f60e94a117bd8 I am 2023-01-16 06:12:34
simplex.Triangulation.get_averaged_mixed_normals: implement deep averaging 6dfb056e477479331c7a903ea52a98301fca4e71 I am 2023-01-15 23:26:43
replace flatten() by reshape(-1) everywhere. The former always allocates new array 97b35c989a5ad8e459bb60133222d50c7f78e1f0 I am 2023-01-15 12:04:30
qt_gui.qt_gui: explicitly export sample_box to console's namespace dd2e50245157082ddb645b693a8a8c573215d50c I am 2023-01-15 11:42:01
replace everywhere np.bool by just bool (it looks like newer numpy dropped it) ac208f89bbf0ad76d38790686041ea778a9b6376 I am 2023-01-15 11:31:56
simplex._Triangulation: implement averaged gradients() f6608597cf490dd6cf1a6af3b7d8e6d0a72732d9 I am 2023-01-15 09:37:14
add line and two lines problems for sensitivity analysis 0c620f7960399ed8b34e02d663772d0eb34e66f1 I am 2023-01-14 08:30:56
simplex.FullCubatureIntegration.get_sensitivities: do not normalize global gradient c648c484a5599a00236ab70c36cdf407c24f5306 I am 2023-01-14 04:51:16
simplex: implement sensitivities 65056319c51fd93deb76ce14e52c08869dfc04a2 I am 2023-01-13 11:27:46
mplot.maxes: prepare GRaph plot 68774535915af3deaf6104a0bbe9b3c4d24c0cec I am 2023-01-12 02:43:20
mplot.mgraph.tri_estimation_plot: use planar vertex estimator 1d300fa56248be9cdab5a4e5b0d4372f68fd5255 I am 2023-01-11 15:48:28
mplot.mart: implement lsf_boundary() contouring 8642d2f0c043f4e71af1cc45b9e25da326afd3ca I am 2023-01-11 05:20:00
mplot.mart.setup_labels: make labels more adaptive 60cd0b34a67b38df1c730dddc9e0771139818f33 I am 2023-01-11 04:35:47
simplex._SamplingTriangulation: self reference fix 79204ff15cba7c5ca24bb5b48e2073058acf00ae I am 2023-01-11 03:21:34
testcases.testcases_2D: add pf for rastrigin 4f3b35fe18496fcb9f59860174c876cb7a82749a I am 2023-01-10 23:39:45
dicebox.circumtri: fix initialization on ED loading. Use simple potential for space filling c02656e588a164685c4a750ce865c4b50f716563 I am 2023-01-10 23:37:30
simplex.FullCubatureIntegration.get_failure_moments: negative probabilities fix 27dd6bb1e5bb0eb1e28eef88e28913d1eca461da I am 2023-01-10 20:16:09
add more nD problems from literature 2380cdbdcf17dd5e0af19506c6f7bb1e838de03b I am 2023-01-10 06:13:56
f_models: implement Norm class 698c3216b1c8a0e2d57bfb33340a7ea8758d4e63 I am 2023-01-09 23:13:48
simplex.FullCabatureIntegration: implement get_failure_moments() 0742ee3d3932d7c3c0b6bbe6e327c92ced04aedd I am 2023-01-09 19:53:55
Commit c6868cfbde7c8a86b73217da544f60e94a117bd8 - dicebox.circumtri: calculate event's radia
Author: I am
Author date (UTC): 2023-01-16 06:12
Committer name: I am
Committer date (UTC): 2023-01-16 06:12
Parent(s): 6dfb056e477479331c7a903ea52a98301fca4e71
Signer:
Signing key:
Signing status: N
Tree: e45f5540dbdbcd26182d53ae636227dcb41c255f
File Lines added Lines deleted
wellmet/dicebox/circumtri.py 63 0
File wellmet/dicebox/circumtri.py changed (mode: 100644) (index e113932..4e31c74)
... ... TriEstimation = namedtuple('TriEstimation', (
29 29 'success_points', 'success_points',
30 30 'failure_points', 'failure_points',
31 31 *sx.CubatureEstimation._fields[2:], *sx.CubatureEstimation._fields[2:],
32 'r_safe',
33 'R_safe',
34 'r_mixed',
35 'R_mixed',
36 'r_failure',
37 'R_failure',
32 38 'p_sum', 'p_sum',
33 39 'max_potential' 'max_potential'
34 40 )) ))
 
... ... class FullCircumTri(_Exploration):
450 456 bx.global_potential_index.pop(-1) bx.global_potential_index.pop(-1)
451 457 bx.global_potential_index[-1] = max_node_potential bx.global_potential_index[-1] = max_node_potential
452 458
459
460 def get_tri_radia(bx):
461 lengths = np.sum(np.square(bx.G), axis=1)
462 lengths = np.sqrt(lengths, out=lengths) #lengths of each radius-vector
463
464 if 'Tri' in dir(bx):
465 simplices = bx.Tri.tri.simplices
466 radia = lengths[simplices]
467 r = np.min(radia, axis=1)
468 R = np.max(radia, axis=1)
469
470 in_failure = bx.failsi[simplices]
471
472 has_failure = in_failure.any(axis=1)
473 all_failure = in_failure.all(axis=1)
474
475 if np.any(~has_failure):
476 r_safe = np.min(r[~has_failure])
477 R_safe = np.max(R[~has_failure])
478 else:
479 r_safe, R_safe = -1, -1
480
481
482 if np.any(all_failure):
483 r_failure = np.min(r[all_failure])
484 R_failure = np.max(R[all_failure])
485 else:
486 r_failure, R_failure = -1, -1
487
488 mixed_mask = np.logical_xor(has_failure, all_failure)
489 if np.any(mixed_mask):
490 r_mixed = np.min(r[mixed_mask])
491 R_mixed = np.max(R[mixed_mask])
492 else:
493 r_mixed, R_mixed = -1, -1
494
495 return r_safe, R_safe, r_mixed, R_mixed, r_failure, R_failure
496
497 else:
498 radia = [-1] * 6
499 r = np.min(lengths)
500 R = np.max(lengths)
501
502 if np.all(bx.failsi):
503 return -1, -1, -1, -1, r, R
504 elif np.any(bx.failsi):
505 return -1, -1, r, R, -1, -1
506 else:
507 return r, R, -1, -1, -1, -1
508
509
453 510
454 511
455 512 def estimate_outside(bx): def estimate_outside(bx):
 
... ... class FullCircumTri(_Exploration):
510 567 success_points, success_points,
511 568 failure_points, failure_points,
512 569 *tri_estimation[2:], *tri_estimation[2:],
570
571 *bx.get_tri_radia(),
513 572 p_sum, p_sum,
514 573 max_potential max_potential
515 574 ) )
 
... ... class FullCircumTri(_Exploration):
551 610 0, #len(sx.mixed_simplices), 0, #len(sx.mixed_simplices),
552 611 0, #len(sx.tri.coplanar), 0, #len(sx.tri.coplanar),
553 612
613 *bx.get_tri_radia(),
554 614 1, 1,
555 615 max_potential max_potential
556 616 ) )
 
... ... class FastCircumTri(FullCircumTri):
586 646 failure_points, failure_points,
587 647 success, success,
588 648 *tri_estimation[3:], *tri_estimation[3:],
649
650 *bx.get_tri_radia(),
589 651 1, 1,
590 652 max_potential max_potential
591 653 ) )
 
... ... class FastCircumTri(FullCircumTri):
626 688 0, #len(sx.mixed_simplices), 0, #len(sx.mixed_simplices),
627 689 0, #len(sx.tri.coplanar), 0, #len(sx.tri.coplanar),
628 690
691 *bx.get_tri_radia(),
629 692 1, 1,
630 693 max_potential max_potential
631 694 ) )
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