Target Outcome

This method is still a work in progress

Layered strategy 1 (cutting layers from each other) worked for extremities without two bones, however for regions such as the lower leg the cutting didn't work as well as hoped. Layered strategy 2 (adaptive meshing) was largely scrapped because difficulties in smoothing the interface of the two surfaces.

Input

Creation of Model Assembly

Creating Surface Representations

Starting with Image Segmentation of separate tissues, generate different stls for each layer of the region, i.e. the bone, muscle, and fat (skin by extrusion?). Smoothing will be done in Slicer by using the Model Maker. As in previous models, decimation will be set to zero, but joint smoothing will no longer be set to zero. This setting ensures the surface nodes of tissue layers that touch each other will be aligned. The value for joint smoothing probably should range somewhere from 10 to 20, based on online documentation. Meshlab is no longer needed for remeshing, but was still used for isolating the region of interest.

Creating the Skin Layer

Not sure if we've decided on how to do the skin.

Placement of the ultrasound probe

The probe Stls can be found at https://simtk.org/svn/multis/app/Registration/Probe%20STLS/

Once you have a local copy you can use the script initial_probe_position.py found here.

In addition to the stl you will need the registration xml for the model you are using, it will be named something like CMULTIS008-1_UL_US_CT.xml for the upperleg of specimen 008.

The probe often overlaps too much with the model, so it can be manually moved in meshlab, or with the Python script Probe_Overlap_Transform.py found here if you are trying to replicate the experimental data.

Creating the MED Flesh File

Layers are first merged in salome by creation of a compound mesh. The layers probably need to be meshed in salome with different settings than the usual settings in StlToMed.py to reduce the number of tetrahedral elements (or very coarse). These files were exported as .med files but still run through StlToMed.py. StlToMed.py is used to create groups between the probe, and the skin, and the skin with the outer layer of the flesh compound mesh. It took around 3 days to run in initial model tests, and the skin tie group needs to be edited to remove quadratic faces (can be done with salome filters).

Model Assembly

We need an xml for group creation, to make surface groups with the bone/muscle/fat as a compound mesh, MedToFebio_Partition.py is used. The following was used for the initial model tests:

<Assembly>
        <Flesh>         
                <file>/path/to/MeshedFlesh.med</file>
                <material>elastic</material>
                <Tie>
                        <Skin type="proximity" multiplier=".01"/>
                </Tie>
        </Flesh>
        <Skin>
                <file>/path/to/MeshedSkin.med</file>
                <material>elastic</material>
                <Contact>
                        <Probe type="normals" multiplier="40"/>
                </Contact>
                <Tie>
                        <Flesh type="proximity" multiplier=".0001"/>
                </Tie>
        </Skin>
        <Probe>
                <file>/path/to/Probe.stl</file>
                <material>rigid</material>
                <Contact>
                        <Skin type="normals" multiplier="20"/>
                </Contact>
        </Probe>
</Assembly>

Pushing to FEBio

Currently, MedtoFebio_Partition.py is used to convert the MED file into the FEBio format. It gave an error, however the geometry file seems to be usable. The material groupings may be misnumbered and the input .feb file needs to be created in these models. Models were reduced using the Multis_Reduction.py script due to the size of the meshes. Even with reduction, a computing cluster is essentially necessary with a reduced model still requiring ~90 GB of memory. Poorly oriented elements were present in the skin mesh, and so the model was initially run in febio 2.5 to find bad wedges, which were then removed with RemoveBadWedges.py.

Output

Specifications/LayeredModelsJointSmoothing (last edited 2019-10-01 13:28:32 by sbdoherty)