update link and rubberband structures

This commit is contained in:
Pim Nelissen
2025-10-24 12:51:38 +02:00
parent b229e9ec64
commit 394a8eba78
2 changed files with 13 additions and 6 deletions

View File

@ -8,4 +8,4 @@ class Link:
direction (int) The direction. Must be 1 or -1.
"""
self.direction = direction
self.direction = direction

View File

@ -3,7 +3,10 @@ import numpy as np
from Link import Link
class RubberBand:
def __init__(self, N, a=1.):
# class attributes
k_B = 1
def __init__(self, N, a=1., T=1.):
"""
RubberBand is a class that can simulate a rubber band with N
incompressible links of length a.
@ -11,16 +14,22 @@ class RubberBand:
Parameters:
N (int) The number of links.
a (float) The fixed length of links.
T (float) Temperature of the system.
"""
self.N = N
self.a = a
self.T = T
self.links = self.__sample_links()
def w(self, f, l):
beta = (self.k_B*self.T)**(-1)
return np.exp(beta*f*l)
@property
def length(self):
return self.a * np.sum([l.direction for l in self.links])
def __sample_links(self):
"""
Sample N Link objects with a random direction.
@ -30,6 +39,4 @@ class RubberBand:
directions = np.ones(samples.shape)
directions[samples < 0.5] = -1.
directions = directions.astype(int)
return [Link(d) for d in directions]
return [Link(d) for d in directions]