Skip to main content

package for PFC (phase field crystal) simulations

Project description

PFC simulation in python

created by michael in 2022/04

pfc_util is a python package for PFC (phase field crystal) simulations.

Dependencies

  • numpy

  • scipy

  • matplotlib

  • pyfftw

  • torusgrid

  • rich

Installation

Install via pip:

pip install pfc-util

Modules

pfc_util.core - Core module; definitions of PFC free energy functional, state functions, as well as minimizers

pfc_util.extra - Extensions to vanilla PFC. Currently includes pfc6, which is a 6th-order generalization to the PFC functional

pfc_util.toolkit - Static preminimized solid/liquid profiles & utility functions.

Minimizers

The package provides three main means of minimizing/evolving a PFC system:

  • Constant chemical potential - The grand potential \(\Omega \equiv F - \mu \int d\mathbf{r} \psi\) is minimized with fixed \(\mu\)

  • Stress relaxer - The grand potential density \(\omega \equiv \Omega / V\) is minimized with respect to the density field and system size with fixed \(\mu\)

  • Conserved dynamics - The free energy \(F\) is minimized with fixed \(\bar\psi\)

Example Code Snippet

The following code snippet will retrieve a preminimized solid unit cell, evolve it under \(\epsilon=0.05\) and \(\mu=0.08\) until \(\bar\psi\) barely changes, and save the newly minimized unit cell to solid_eps0.05_mu0.08.field

import pfc_util as pfc
import torusgrid as tg

'''Get a preminimized solid profile at epsilon = 0.1'''
solid = pfc.toolkit.get_unit_cell(eps='0.1')


'''Minimize this profile at epsilon = 0.2 and mu = 0.26'''
pfc.ConstantMuMinimizer(solid, dt=0.001, eps=0.05, mu=0.08).run(
        n_steps=31, # n_steps means the number of evolution steps between hook calls
                    # hooks are invoked to update display, monitor values, etc
        hooks= (
            tg.dynamics.Display() # add display capability
            + tg.dynamics.Panel() # add a panel to live display
            + tg.dynamics.MonitorValues(
                {'psibar': lambda e: e.field.psi.mean()},
                period=8
            ) # tell the minimizer that psi.mean() should be monitored and stored as "psibar"
              # here e refers to the minimizer instance
              # period = 8 means that the values are logged every 8 hook calls
              # so in this case we would be calculating the values every 31*8 = 248 time steps
            + tg.dynamics.Text('psibar={psibar:.8f}')
            + tg.dynamics.DetectSlow(
                'psibar', rtol=1e-9, atol=0, period=8, patience=200
            ) # make the minimizer stop if psibar varies sufficiently slowly
        )
    )

tg.save(solid, './solid_eps0.05_mu0.08.field') # save the minimized field

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pfc_util-0.4.4.tar.gz (95.1 kB view details)

Uploaded Source

Built Distribution

pfc_util-0.4.4-py3-none-any.whl (119.0 kB view details)

Uploaded Python 3

File details

Details for the file pfc_util-0.4.4.tar.gz.

File metadata

  • Download URL: pfc_util-0.4.4.tar.gz
  • Upload date:
  • Size: 95.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for pfc_util-0.4.4.tar.gz
Algorithm Hash digest
SHA256 63040d4157e7b4a067af2271a6135015fc575b19d85c89149b6ab3c49a5e6ec6
MD5 5d4adcc75e5eb9d75e03db0df9622aa0
BLAKE2b-256 7489e8f9af60d3933b7d2af6defe64d7cc659101a6fdf1b29296274440b727ea

See more details on using hashes here.

File details

Details for the file pfc_util-0.4.4-py3-none-any.whl.

File metadata

  • Download URL: pfc_util-0.4.4-py3-none-any.whl
  • Upload date:
  • Size: 119.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for pfc_util-0.4.4-py3-none-any.whl
Algorithm Hash digest
SHA256 7424b8dadb1602e5515b36ed1969b2cc3669d924caa916c71081dfabe13edcb0
MD5 347510b486f8a28c987c6116053ce2fb
BLAKE2b-256 dcbd1573c95aff017faa588f06df7d1e2d52840f9db1ee0b83ac3fb86e10e914

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page