GithubHelp home page GithubHelp logo

kvslab / vasp Goto Github PK

View Code? Open in Web Editor NEW
6.0 6.0 4.0 15.77 MB

A collection of tools for pre-processing, simulating, and post-processing vascular fluid-structure-interaction problems

Home Page: https://kvslab.github.io/VaSP/

License: GNU General Public License v3.0

Python 99.87% Dockerfile 0.13%
fenics fluid-structure-interaction python simulation vascular

vasp's People

Contributors

dbruneau-mie avatar johannesring avatar keiyamamo avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

vasp's Issues

Add instructions/links to files for users to run demo simulations

Currently, there are two additional files needed to run the offset stenosis (also the case for other simulations):
-mesh/file_stenosis_probe_point.json
-mesh/file_stenosis.h5
Eventually, we should write instructions in the Readme to show users where to obtain these files, or describe how users can make their own.

fsipy requires `morphMan` for all the functionality

https://github.com/KVSlab/Aneurysm_Workflow_FSI/blob/28422ae70158c4b6581ce0339308ae6ee25b6bcf/src/fsipy/__init__.py#L8-L10

I tried to use fsipy-log-plotter on the cluster and figured out that morphMan is required even when we just want to use post-processing tools. We could do same as VaMPy (use try: except method) but I do wonder if we even need this import in __init__.py under src/. It makes more sense to import functions but not really file itself. Hope to hear what you think! @johannesring @jorgensd

Replace `np.convolve` with `scipy.signal.fftconvolve`

Hi @dbruneau-mie

When computing the moving average of the high-passed displacement, np.convolve is used.
https://github.com/dbruneau-mie/Aneurysm_Workflow_FSI/blob/a4c5369c903f731d15a323502dac8a236b843282/postprocessing_h5py/postprocessing_common_h5py.py#L737
Not sure if you tried it before, but it seems possible to speed it up with scipy.signal.fftconvolve.
https://docs.scipy.org/doc/scipy/reference/generated/scipy.signal.fftconvolve.html
I haven’t tried it yet, but will try it and report it here.

Best,
Kei

`create_hi_pass_viz` called only when `save_deg=1`

Hi Daivd,

I noticed that the you have conditional when calling create_hi_pass_viz function.
Does this exist under the assumption that the user runs b_domain_band_sd1.sh before b_domain_band_sd2.sh?
I ran simulation with save_deg=2 and only ran b_domain_band_sd2.sh, but wonder if it's necessary to also run b_domain_band_sd1.sh. The only missing part I could find was this create_hi_pass_viz function but this does not seem to care save_deg.

https://github.com/dbruneau-mie/Aneurysm_Workflow_FSI/blob/b98209cfd1e86a97e4ca11cff0dcf435a4825498/postprocessing_h5py/create_visualizations.py#L91-L94

`print_mesh_summary` not correct with MPI

def print_mesh_summary(mesh: Mesh) -> None:

I noticed that coordinate range is wrong when running with MPI. This is because we are taking the sum instead of min or max.

combined_info = {key: sum(info[key] for info in gathered_info) for key in gathered_info[0]}

@johannesring There is basically the same function in VaMPy, but VaMPy one does not have this problem. Should we remove print_mesh_summary from VaSP and use the one from VaMPy? Was there particular reason you made this function in VaSP?

potential bug in `--meshing-method distancetospheres ` ?

When I tried the following command

fsipy-mesh -i tests/test_data/artery/artery.stl --meshing-method distancetospheres --meshing-parameters 0 0.1 0.3 .05 --smoothing-method taubin -cm False

without *_distance_to_sphere_spheres.vtp file and selected sphere on the popped up screen, I got the following error.

  File "/Users/keiyamamoto/Documents/Aneurysm_Workflow_FSI/src/fsipy/automatedPreprocessing/automated_preprocessing.py", line 383, in run_pre_processing
    distance_to_sphere = dist_sphere_spheres(surface_extended, file_name_distance_to_sphere_spheres,
  File "/Users/keiyamamoto/Documents/Aneurysm_Workflow_FSI/src/fsipy/automatedPreprocessing/preprocessing_common.py", line 77, in dist_sphere_spheres
    distanceToSpheres.Execute()
  File "/Users/keiyamamoto/mambaforge/envs/fsipy/lib/python3.10/site-packages/vmtk/vmtkdistancetospheres.py", line 355, in Execute
    self.Surface = self.ComputeDistances()
  File "/Users/keiyamamoto/mambaforge/envs/fsipy/lib/python3.10/site-packages/vmtk/vmtkdistancetospheres.py", line 91, in ComputeDistances
    distanceToSpheresFilter = vtkvmtk.vtkvmtkPolyDataDistanceToSpheres()
AttributeError: module 'vmtk.vtkvmtk' has no attribute 'vtkvmtkPolyDataDistanceToSpheres'. Did you mean: 'vtkvmtkPolyDataDistanceToCenterlines’?

It works fine with stored_artery_variable_mesh_density_distance_to_sphere_spheres.vtp but not without the file.
Would it be possible for @johannesring to check this out? I’m a bit occupied with other stuff at the moment and it would be great if you could check if you get the same error.

Best,

scaling surface mesh results in straight centerline

If we scale the surface mesh to be small at the beginning of pre-processing, centerlines are likely to be straight, causing issue with the overall meshing. This is previously reported elsewhere vmtk/SlicerExtension-VMTK#26

It seems like the limitation of VMTK when the branches becomes too “narrow” due to sclaing.

Screenshot 2023-12-14 at 11 24 28

It is definitely more stable & robust to scale the mesh when converting to HDF5 format using sch5. However, this does not scale the probe points & other parameters saved in json file.

SubMesh only works for single marker

Hi @jorgensd

I have a question specifically to you. In our framework, we separate the domain after simulation has completed using SubMesh function. So far, I’ve been using only single fluid/solid domain but we also use multiple fluids/solids. Base on the discussion here, it seems not possible to define multiple domain using SubMesh with different markers (In the link, they enforce the different subdomains to have single marker?).

So my question is :
Is it possible to separate domains while keeping multiple markers for specific domain ? I also attached illustration where I try to explain what I want to achieve. Maybe is this something MeshView can handle?

https://github.com/KVSlab/Aneurysm_Workflow_FSI/blob/c6b8b5aa480417abe6ec4f9794ca354bc4b0830b/src/fsipy/automatedPostprocessing/postprocessing_mesh/separate_mesh.py#L39

Screenshot 2023-10-23 at 16 04 49

Pre-factorize local_solver

As an optimization at a later stage, we can pre-factorize the projection operator introduced by Johannes by adding:
https://bitbucket.org/fenics-project/dolfin/src/fd662efc1c0ddefa341c1dac753f717f6b6292a8/dolfin/fem/LocalSolver.h?at=master#lines-114:115
instead of solve_local_rhs/solve_global_rhs depending on the RHS.
We could then first assemble the lhs (in a class initialization), factorize the matrix once (if the mesh doesn't deform) and keep a cache of all the local element matrix factorizations.

CI fails due to typing issue with mypy

CI has been failing with the following error message

src/vasp/automatedPostprocessing/log_plotter.py:1026: error: Value of type "Axes" is not indexable  [index]
src/vasp/automatedPostprocessing/log_plotter.py:1035: error: Value of type "Axes" is not indexable  [index]

I found some reference that might be helpful: pydata/xarray#9234

Bug in computing hemodynamic indicies

I found a bug in hemodynamic indices computation. Here is the summary of the problem and how to fix. I will check if the new computation is correct and will make a PR once it is confirmed.

Source of the problem

tawss = project(inner(tau, tau) ** (1 / 2), V_boundary)

When computing the magnitude of wall shear stress, we use FEniCS project function. However, according to this post, this so-called L2 projection does not preserve the sign and can cause oscillations. If I understand correctly, this problem is called Gibbs Phenomenon.
In our case, I found that the tawss (or magnitude of wall shear stress) has negative values even though they should be positive.

How to fix
Again, according to this post, the fix is to use so-called lumped-projection (see below). I tested this lumped projection with simple stenosis case and one of the aneurysms, and found that all the values are positive and OSIis bounded to be between 0 - 0.5, as it should. Thus, I think this is the way to fix . Perhaps @jorgensd can teach us this lumped projection ?

def lumpedProject(f):
    v = TestFunction(V)
    lhs = assemble(inner(Constant(1.0),v)*dx)
    rhs = assemble(inner(f,v)*dx)
    u = Function(V)
    as_backend_type(u.vector())\
        .vec().pointwiseDivide(as_backend_type(rhs).vec(),
                               as_backend_type(lhs).vec())
    return u

CI failing

Hi @johannesring

I noticed that CI is failing after the last PR #140. It seems like the mesh is empty. Do you know why it is happening?

Best,
Kei

`preprocessing_mesh/3run_meshing.py` fails

Hi @dbruneau-mie

No reply is needed here, but I just want to share the error message I received so that we can maybe have a look at it together while I’m in Toronto.

Following is the error message I received from 3run_meshing.py

$ python 3run_meshing.py
Reading VTK XML surface file.
Quit renderer
Writing STL surface file.
Iteration 1/10
Iteration 2/10
Iteration 3/10
Iteration 4/10
Iteration 5/10
Iteration 6/10
Iteration 7/10
Iteration 8/10
Iteration 9/10
Iteration 10/10
Final mesh improvement
--- Creating fsi mesh
Not capping surface
Remeshing surface
Iteration 1/10
Iteration 2/10
Iteration 3/10
Iteration 4/10
Iteration 5/10
Iteration 6/10
Iteration 7/10
Iteration 8/10
Iteration 9/10
Iteration 10/10
Final mesh improvement
Computing projection
Generating boundary layer fluid
Generating boundary layer solid
untangle procedure..
Capping inner surface
Remeshing endcaps
try last : Iteration 1/10
Iteration 2/10
Iteration 3/10
Iteration 4/10
Iteration 5/10
Iteration 6/10
Iteration 7/10
Iteration 8/10
Iteration 9/10
Iteration 10/10
Final mesh improvement
Computing sizing function
Generating volume mesh
TetGen command line options: pq1.414000q10.000000q165.000000YsT1.000000e-08zQm
Assembling fluid mesh
Assembling final FSI mesh
2022-11-21 07:45:45.357 ( 35.322s) [ 17C9B5] vtkXMLWriter.cxx:649 ERR| vtkXMLUnstructuredGridWriter (0x7fab15949710): Error opening output file "meshes/stenosis_fsi.vtu"
2022-11-21 07:45:45.358 ( 35.322s) [ 17C9B5] vtkXMLWriter.cxx:652 ERR| vtkXMLUnstructuredGridWriter (0x7fab15949710): Error code "No such file or directory"
2022-11-21 07:45:45.358 ( 35.322s) [ 17C9B5] vtkExecutive.cxx:753 ERR| vtkCompositeDataPipeline (0x7fab1594ae70): Algorithm vtkXMLUnstructuredGridWriter(0x7fab15949710) returned failure for request: vtkInformation (0x7fab1594b7a0)
Debug: Off
Modified Time: 4307890
Reference Count: 1
Registered Events: (none)
Request: REQUEST_DATA
FROM_OUTPUT_PORT: -1
ALGORITHM_AFTER_FORWARD: 1
FORWARD_DIRECTION: 0
2022-11-21 07:45:45.358 ( 35.322s) [ 17C9B5] vtkXMLWriter.cxx:649 ERR| vtkXMLUnstructuredGridWriter (0x7fab15949710): Error opening output file "meshes/stenosis_fsi.vtu"
2022-11-21 07:45:45.358 ( 35.322s) [ 17C9B5] vtkXMLWriter.cxx:652 ERR| vtkXMLUnstructuredGridWriter (0x7fab15949710): Error code "No such file or directory"
2022-11-21 07:45:45.358 ( 35.322s) [ 17C9B5] vtkExecutive.cxx:753 ERR| vtkCompositeDataPipeline (0x7fab1594ae70): Algorithm vtkXMLUnstructuredGridWriter(0x7fab15949710) returned failure for request: vtkInformation (0x7fab1594b7a0)
Debug: Off
Modified Time: 4307918
Reference Count: 1
Registered Events: (none)
Request: REQUEST_DATA
FROM_OUTPUT_PORT: -1
ALGORITHM_AFTER_FORWARD: 1
FORWARD_DIRECTION: 0
Writing Dolfin file.
2022-11-21 07:45:45.358 ( 35.323s) [ 17C9B5]vtkvmtkDolfinWriter.cxx:65 ERR| vtkvmtkDolfinWriter (0x7fab1594cd80): Could not open file for writing.
2022-11-21 07:45:45.380 ( 35.344s) [ 17C9B5] vtkThreshold.cxx:96 WARN| vtkThreshold::ThresholdBetween was deprecated for VTK 9.1 and will be removed in a future version.
Writing Dolfin file.
2022-11-21 07:45:45.383 ( 35.348s) [ 17C9B5]vtkvmtkDolfinWriter.cxx:65 ERR| vtkvmtkDolfinWriter (0x7faaf57180e0): Could not open file for writing.
2022-11-21 07:45:45.383 ( 35.348s) [ 17C9B5] vtkXMLWriter.cxx:649 ERR| vtkXMLUnstructuredGridWriter (0x7faaf570ca00): Error opening output file "meshes/stenosis_cfd.vtu"
2022-11-21 07:45:45.383 ( 35.348s) [ 17C9B5] vtkXMLWriter.cxx:652 ERR| vtkXMLUnstructuredGridWriter (0x7faaf570ca00): Error code "No such file or directory"
2022-11-21 07:45:45.383 ( 35.348s) [ 17C9B5] vtkExecutive.cxx:753 ERR| vtkCompositeDataPipeline (0x7faaf5708b30): Algorithm vtkXMLUnstructuredGridWriter(0x7faaf570ca00) returned failure for request: vtkInformation (0x7faaf571a500)
Debug: Off
Modified Time: 4370005
Reference Count: 1
Registered Events: (none)
Request: REQUEST_DATA
FROM_OUTPUT_PORT: -1
ALGORITHM_AFTER_FORWARD: 1
FORWARD_DIRECTION: 0
2022-11-21 07:45:45.383 ( 35.348s) [ 17C9B5] vtkXMLWriter.cxx:649 ERR| vtkXMLUnstructuredGridWriter (0x7faaf570ca00): Error opening output file "meshes/stenosis_cfd.vtu"
2022-11-21 07:45:45.383 ( 35.348s) [ 17C9B5] vtkXMLWriter.cxx:652 ERR| vtkXMLUnstructuredGridWriter (0x7faaf570ca00): Error code "No such file or directory"
2022-11-21 07:45:45.383 ( 35.348s) [ 17C9B5] vtkExecutive.cxx:753 ERR| vtkCompositeDataPipeline (0x7faaf5708b30): Algorithm vtkXMLUnstructuredGridWriter(0x7faaf570ca00) returned failure for request: vtkInformation (0x7faaf571a500)
Debug: Off
Modified Time: 4370032
Reference Count: 1
Registered Events: (none)
Request: REQUEST_DATA
FROM_OUTPUT_PORT: -1
ALGORITHM_AFTER_FORWARD: 1
FORWARD_DIRECTION: 0

`interpolate(volume_function_space, surface_function_space)` does not work with DG function space.

Problem (This problem is not part of the repository yet, but posted here for the sake of discussion and as a memo)
When interpolating DG function of a volume mesh to a surface mesh, FEniCS naive interpolate function does not work properly. This is due to the fact that FEniCS does not know the ownership of the DOF and assign same DOF to the vertex, resulting in almost CG function. The problem becomes worse in parallel since mesh is distributed differently.

What we want
We have WSS computation over the entire domain, but it is only defined on the boundary. Therefore, we want to extract the value at the boundary and save them with boundary mesh to save IO.

Temporal solution
We can save WSS with volume mesh as a temporal solution. File size becomes big, but it shows correct result.

MWE

from dolfin import *

# not local projection at the moment
def local_project(f, V):
    u = TrialFunction(V)
    v = TestFunction(V)
    a_proj = inner(u, v)*ds
    b_proj = inner(f, v)*ds
    A = assemble(a_proj, keep_diagonal=True)
    A.ident_zeros()
    b = assemble(b_proj)
    # solver = LocalSolver(A, b)
    # solver.factorize()
    u = Function(V)
    # solver.solve_local_rhs(u)
    solve(A, u.vector(), b)
    # from IPython import embed; embed(); exit(1)
    return u


class STRESS:
    def __init__(self, u, nu, mesh, velocity_degree):
        boundary_ds = Measure("ds", domain=mesh)
        boundary_mesh = BoundaryMesh(mesh, 'exterior')
        self.bmV = VectorFunctionSpace(boundary_mesh, 'DG', velocity_degree -1)
        self.V = VectorFunctionSpace(mesh, 'DG', velocity_degree -1)

        # Compute stress tensor
        sigma = (2 * nu * sym(grad(u)))
        # Compute stress on surface
        n = FacetNormal(mesh)
        F = -(sigma * n)

        # Compute normal and tangential components
        Fn = inner(F, n)  # scalar-valued
        self.Ft = F 
        #- (Fn * n)  # vector-valued
        #from IPython import embed;embed()

    def __call__(self):
        """
        Compute stress for given velocity field u

        Returns:
            Ftv_mb (Function): Shear stress
        """
        self.Ftv = local_project(self.Ft, self.V)
        self.Ftv_bd = interpolate(self.Ftv, self.bmV)

        return self.Ftv, self.Ftv_bd

velocity_degree = 2
mesh = UnitCubeMesh(10, 10, 10)

V = VectorFunctionSpace(mesh, "CG", velocity_degree)
f = Expression(("10*x[0]*x[0]+sin(x[0])", "cos(x[1])", "x[2]"), degree=velocity_degree)
u_2 = interpolate(f, V)
volume_writer = XDMFFile("u2.xdmf")
volume_writer.write_checkpoint(u_2, "u", 0, XDMFFile.Encoding.HDF5, False)
volume_writer.close()


stress = STRESS(u_2, 1, mesh, velocity_degree)
volume_tau, surface_tau = stress()

# Here, volume_tau is correct, but surface_tau is incorrect due to interpolate()
volume_writer = XDMFFile("volume_tau.xdmf")
volume_writer.write_checkpoint(volume_tau, "tau", 0, XDMFFile.Encoding.HDF5, False)
volume_writer.close()
surface_tau_writer = XDMFFile("surface_tau.xdmf")
surface_tau_writer.write_checkpoint(surface_tau, "tau", 0, XDMFFile.Encoding.HDF5, False)
surface_tau_writer.close()

Edge length evaluator

Averages edge length for all edges of a cell

from dolfin import *
import numpy as np

mesh = UnitSquareMesh(10, 10)
mesh.init(1)
ALE.move(mesh, Expression(("x[0]", "cos(x[1])"),degree=1))
num_cells = mesh.num_cells()
V = FunctionSpace(mesh, "DG", 0)
u = Function(V)
values = np.zeros(num_cells, dtype=np.float64)

for cell in cells(mesh):
    edges = cell.entities(1)
    
    value = 0
    for edge in edges:
        value += Edge(mesh, edge).length()
    values[cell.index()] = value / len(edges)
u.vector().set_local(values)
u.vector().apply("local")
with XDMFFile("edge_length.xdmf") as xdmf:
    xdmf.write(u)

To do list for updating workflow

  • remove 1xml_to_stl.py and 2end_cap_remove.py
  • add config/command-line option to 3run_meshing.py
  • add a way to create variable thickness
  • find a way to run some post-processing on parallel

test_log_plotter fails locally

Hi @johannesring

I just ran pytest locally on my Mac book and test_log_plotter failed. Here is diff image that was automatically generated. I’m guessing it is specific to my machine, but do you have any idea how to fix this?

Screenshot 2023-11-02 at 10 57 11

inf values in probe points

I see a lot of inf values in the probe points when running a simulation. For example, running offset_stenosis.py with mesh tests/test_data/offset_stenosis/offset_stenosis.h5, I see the following in the output:

Probe Point 0: Velocity: (inf, inf, inf) | Pressure: inf
Probe Point 1: Velocity: (2.6522005450325917e-06, 9.004169783669157e-08, 2.556789395900188e-07) | Pressure: -0.5747467897441496
Probe Point 2: Velocity: (1.6966105436552177e-06, 2.097219728091598e-07, -1.2411812763672394e-07) | Pressure: -0.60928116300698
Probe Point 3: Velocity: (-1.1259804320660771e-05, -4.056030797686116e-07, 4.3631420502719407e-07) | Pressure: -0.5866639167234388
Probe Point 4: Velocity: (-4.156414718756823e-05, 2.4705259097545463e-07, -5.403469671672269e-07) | Pressure: -0.41268253231583285
Probe Point 5: Velocity: (-4.3328718733824886e-05, -5.897341466300501e-08, 2.2122727979770463e-08) | Pressure: -0.13651417212024583
Probe Point 6: Velocity: (inf, inf, inf) | Pressure: inf
Probe Point 0: Displacement: (inf, inf, inf)
Probe Point 1: Displacement: (-3.2589385895820617e-11, -3.962532355185211e-10, 2.7303307356981653e-12)
Probe Point 2: Displacement: (-2.984020129299609e-10, -2.040394342683499e-10, -6.151237193329225e-10)
Probe Point 3: Displacement: (inf, inf, inf)
Probe Point 4: Displacement: (inf, inf, inf)
Probe Point 5: Displacement: (9.848934714160313e-10, -2.184786493328172e-09, -2.4213085341953646e-09)
Probe Point 6: Displacement: (inf, inf, inf)
Probe Point 7: Displacement: (7.388234608080248e-12, 1.5841718154329333e-11, 6.430726720766079e-10)
Probe Point 8: Displacement: (inf, inf, inf)
Probe Point 9: Displacement: (-1.2754807542976906e-11, 4.794367385370061e-10, 2.7439649932579955e-11)
Probe Point 10: Displacement: (1.0297593729658233e-09, -1.1346758663138893e-09, 5.024694257002873e-09)
Probe Point 11: Displacement: (1.177377810541181e-12, 2.908861739560569e-13, 8.446887094196629e-13)
Probe Point 12: Displacement: (8.180294834513135e-10, -3.0860245849862205e-10, 1.1424596762611215e-09)
Probe Point 13: Displacement: (inf, inf, inf)
Probe Point 14: Displacement: (4.1475563726369603e-10, 1.273463483476047e-09, -6.299560888162082e-09)
Probe Point 15: Displacement: (1.1116194387706817e-09, 1.3723627750858364e-09, -8.120154740656985e-10)
Probe Point 16: Displacement: (inf, inf, inf)
Probe Point 17: Displacement: (-6.228462682562004e-10, 4.30651427280546e-10, -4.08704314897832e-09)
Probe Point 18: Displacement: (1.0008234003951532e-09, -1.241683188355398e-09, 2.7267552124348525e-11)
Probe Point 19: Displacement: (3.160124059513733e-10, -1.337815737773215e-10, 4.036283612790666e-10)
Probe Point 20: Displacement: (3.4359259020874706e-12, 1.5782540211756368e-12, -3.442519001150192e-14)
Probe Point 21: Displacement: (inf, inf, inf)
Probe Point 22: Displacement: (inf, inf, inf)
Probe Point 23: Displacement: (1.0849004718263461e-12, -1.1241367434626839e-13, -2.0111074204365114e-13)
Probe Point 24: Displacement: (-4.622358355768014e-10, -2.9845818765341035e-09, 8.108496628466043e-11)
Probe Point 25: Displacement: (8.476635207435515e-10, -6.807143913555534e-10, 9.586414362963661e-10)
Probe Point 26: Displacement: (8.594015606035744e-10, 5.631592248454125e-10, 9.733092881841096e-10)
Probe Point 27: Displacement: (4.644287277027024e-11, 2.6627688636910697e-10, -1.698718889636885e-10)
Probe Point 28: Displacement: (6.764497995857786e-10, -2.338142542974677e-10, -4.757194978402446e-10)
Probe Point 29: Displacement: (inf, inf, inf)
Probe Point 30: Displacement: (-1.347958531611807e-11, -3.1043795416326504e-10, 3.7022452834626444e-10)
Probe Point 31: Displacement: (-1.6155891685880262e-10, 1.0023982308730039e-09, -4.782479698246703e-10)
Probe Point 32: Displacement: (3.460709772511891e-10, -1.194781128066103e-10, -2.5148267004291506e-10)
Probe Point 33: Displacement: (inf, inf, inf)
Probe Point 34: Displacement: (inf, inf, inf)
Probe Point 35: Displacement: (4.95258991449082e-10, 1.8915594635730265e-10, 4.143455981293789e-10)
Probe Point 36: Displacement: (1.1773557110467934e-09, 1.340913555003514e-09, -1.4160425477532019e-09)
Probe Point 37: Displacement: (inf, inf, inf)
Probe Point 38: Displacement: (1.0872273386282375e-09, -8.857442301585686e-10, 1.343448012887675e-09)
Probe Point 39: Displacement: (1.081530936920445e-09, 3.005042197310784e-09, 3.5701022197224775e-09)
Probe Point 40: Displacement: (1.04207208878488e-09, 1.4129743519779713e-09, -5.27447280115668e-10)
Probe Point 41: Displacement: (inf, inf, inf)
Probe Point 42: Displacement: (1.1742255331365789e-09, 2.314514918040007e-09, 2.064621446426579e-09)
Probe Point 43: Displacement: (1.1094868203415985e-09, -1.262480174662617e-09, 9.032869749382637e-10)
Probe Point 44: Displacement: (inf, inf, inf)
Probe Point 45: Displacement: (1.158798300768544e-09, 1.3971974645809218e-09, 3.086862934164368e-09)
Probe Point 46: Displacement: (inf, inf, inf)
Probe Point 47: Displacement: (9.351998650124184e-11, 3.543335284913362e-10, -2.7334085088867236e-10)
Probe Point 48: Displacement: (inf, inf, inf)
Probe Point 49: Displacement: (-8.92520370212006e-11, -2.7991265637226933e-09, 1.4533405672744934e-09)

I also see inf values when running aneursym.py. @keiyamamo - do you know what is the reason for this?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.