Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add functions to compute topological quantities #70

Merged
merged 21 commits into from
Mar 28, 2022

Conversation

skim0119
Copy link
Collaborator

@skim0119 skim0119 commented Mar 12, 2022

Topological Quantities: Link, Writhe, and Twist

Knot-theory module added to Cosserat-rod as mixin. It extends the Cosserat-rod class to compute link, writhe, and twist (LWT).

Tasks before the merge

  • Unittest
  • Enable/allow computing functions to be used in post-processing.
  • In-line documentations
  • Documentation page for LWT description
    • Also add explanation on how to batch-process.
    • Link examples: Solenoids, Plectomenes
    • Advanced documentation on type_of_additional_segment
      • Separate collection of reference will include papers related to LWT. Additional table and description is added in KnotTheory docstring.

Design purpose ☕

  • The implementation is in a separate module because LWT property is not tied to the Cosserat rod only.
  • The protocol is given to check the compatibility of mixin. Here, we check RodBase and KnotTheoryCompatibleProtocol. The protocol KnotTheoryCompatibleProtocol checks if necessary properties (i.e. collections) exist.

Note 📔

  • These computations are relatively expensive and much more efficient to do in the post-processing stage. It is included as rod-property, because users might want to use LWT in their application, but not recommended to use in every iteration (e.g. callback). We should state this clearly and provide examples of expected usage in the documentation.
  • I'm targeting this PR on update v0.3.0 because there is no need to rush, but we can try to include it earlier if completed.

@skim0119 skim0119 added enhancement New feature or request update Update the codebase labels Mar 12, 2022
@skim0119 skim0119 added this to the Version 0.3 milestone Mar 12, 2022
@skim0119 skim0119 requested a review from armantekinalp March 12, 2022 22:06
@skim0119 skim0119 self-assigned this Mar 12, 2022
@skim0119 skim0119 changed the title Add functions to compute topological quantities (v0.3) Add functions to compute topological quantities Mar 12, 2022
@skim0119 skim0119 changed the base branch from master to update-0.3.0 March 12, 2022 22:08
@skim0119 skim0119 changed the base branch from update-0.3.0 to update-0.2.3 March 23, 2022 06:43
armantekinalp and others added 4 commits March 27, 2022 23:41
This commit adds an example how to call and use LWT functions after the
simulation completed.
This commit adds example to show  how to use LWT, using the Plectoneme
example.
@armantekinalp
Copy link
Contributor

I run the example cases for LWT, here are the results.

For plectoneme:
link_twist_writhe_plectoneme

For solenoid:
link_twist_writhe_solenoid

Copy link
Contributor

@armantekinalp armantekinalp left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@skim0119 skim0119 merged commit 001bb6f into GazzolaLab:update-0.2.3 Mar 28, 2022
@skim0119 skim0119 deleted the patch-topology branch March 28, 2022 20:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request update Update the codebase
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants