OpenFTS Documentation

OpenFTS is a high performance simulation package in C++11 for performing field-theoretic simulations. OpenFTS is currently under active development by Joshua Lequieu at Drexel University.

_images/OpenFTS_first_single_diamond.png

Single Diamond Phase

_images/OpenFTS_first_CL.png

Complex Langevin Simulation

import openfts
fts = openfts.OpenFTS()

fts.cell = openfts.Cell(cell_scale=4.0,cell_lengths=[1.0,1.0,1.0],tilt_factors=[0,0,0],dimension=3,length_unit='Rg')
fts.field_layout = openfts.FieldLayout(npw=[16,16,16], random_seed=1)

scft = openfts.driver.SCFT(dt=5.0,nsteps=4000,output_freq=100,stop_tolerance=1e-05)
scft.field_updater = openfts.field_updater.EMPEC(update_order='simultaneous',adaptive_timestep=False, lambdas=[1.0, 1.0])
fts.driver = scft

chiAB = openfts.model.ChiAB(Nref=1.0,bref=1.0,chiN=20.0)
chiAB.init_fields['mu_plus'] = openfts.init_field.Random(mean=0.0,stdev=10.0)
chiAB.init_fields['mu_minus'] = openfts.init_field.Random(mean=0.0,stdev=10.0)
fts.model = chiAB

diblock = openfts.molecule.PolymerLinearContinuous(alpha=1.0,ds=0.01,nblocks=2,block_fractions=[0.5, 0.5],block_species=['A', 'B'],volume_frac=1.0)
fts.molecules.append(diblock)

fts.operators.append(openfts.operator.Hamiltonian(averaging_type='none'))

fts.species.append(openfts.Species(label='A', b=1.0))
fts.species.append(openfts.Species(label='B', b=1.0))

fts.output = openfts.Output()

fts.run()

Notable features:

  • Fully featured python interface

  • Calculation via single CPU, multiple CPUs (via OpenMP), Nvidia GPUs (via CUDA) and AMD GPUs (via HIP)

  • Double/float support via simple build flags

  • Variable Cell SCFT, Complex Langevin simulations, RPA, Gibbs Ensemble

  • Automated tools to optimize timesteps

  • Linear, comb and star polymer architectures

  • Continuous and discrete chain models

  • Suports any number of molecules, composed of any number of species, in any monomer sequence

  • Multiple field updaters

  • Extensive unit/integration tests

  • Support for both scaled units (e.g. B,C,E, \(\phi_i\), \(\tilde{a}\), \(\tilde{V}\)) and unscaled units (e.g. \(u_0\), \(\rho_0\), \(l_B\), \(n_i\), a, V)

  • Documentation (clearly =D)

Indices and tables