Skip to content
This repository has been archived by the owner on Nov 27, 2024. It is now read-only.

Commit

Permalink
Merge branch 'main' into dependabot/pip/matplotlib-3.9.1
Browse files Browse the repository at this point in the history
  • Loading branch information
samwaseda authored Aug 2, 2024
2 parents a5df8f1 + 001e6c4 commit 1f02d2e
Show file tree
Hide file tree
Showing 10 changed files with 58 additions and 18 deletions.
5 changes: 3 additions & 2 deletions .ci_support/environment-notebooks-integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@ dependencies:
- k3d
- matplotlib =3.8.4
- numpy =1.26.4
- pyiron_base =0.9.5
- pyiron_snippets =0.1.2
- pyiron_base =0.9.10
- pyiron_snippets =0.1.3
- pyiron-data =0.0.30
- python-damask =3.0.0b
- scipy =1.14.0
Expand All @@ -28,3 +28,4 @@ dependencies:
- trame-vuetify =2.5.0
- sympy =1.12.1
- python-blosc2
- mendeleev =0.17.0
5 changes: 3 additions & 2 deletions .ci_support/environment-pypi-unit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,10 @@ dependencies:
- codacy-coverage
- matplotlib =3.8.4
- numpy =1.26.4
- pyiron_base =0.9.5
- pyiron_snippets =0.1.2
- pyiron_base =0.9.10
- pyiron_snippets =0.1.3
- scipy =1.14.0
- sympy =1.12.1
- python-blosc2
- python-damask =3.0.0b
- mendeleev =0.17.0
2 changes: 1 addition & 1 deletion pyiron_continuum/damask/damaskjob.py
Original file line number Diff line number Diff line change
Expand Up @@ -111,7 +111,7 @@ def set_homogenization(self, **kwargs):
"""
self.input.homogenization = DAMASKCreator.homogenization(**kwargs)

def set_phase(self, composition, lattice, output_list):
def set_phase(self, composition, lattice, output_list=None):
"""
Args:
Expand Down
29 changes: 26 additions & 3 deletions pyiron_continuum/damask/factory.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
) as damask_alarm:
from damask import GeomGrid, YAML, ConfigMaterial, seeds, Rotation
import numpy as np
import mendeleev

__author__ = "Muhammad Hassani"
__copyright__ = (
Expand Down Expand Up @@ -191,27 +192,33 @@ def homogenization(method, parameters):
"""
return {method: parameters}


@staticmethod
def phase(composition, lattice, output_list, elasticity, plasticity=None):
def phase(composition, elasticity, plasticity=None, lattice=None, output_list=None):
"""
Returns a dictionary describing the phases for damask.
Args:
composition(str)
lattice(dict)
lattice(str)
output_list(str)
elasticity(dict)
plasticity(dict)
Examples:
phase = phase(
composition='Aluminum',
lattice='cF',
output_list='[F, P, F_e, F_p, L_p, O]',
elasticity=elasticity,
plasticity=plasticity
)
For the details of isotropic model, one can refer to https://doi.org/10.1016/j.scriptamat.2017.09.047
"""
if lattice is None:
lattice = {"BCC": "cI", "HEX": "hP", "FCC": "cF"}[
composition_to_spacegroup(composition)
]
if output_list is None:
output_list = ["F", "P", "F_e", "F_p", "L_p", "O"]
d = {
composition: {
"lattice": lattice,
Expand Down Expand Up @@ -310,3 +317,19 @@ def rotation(method="from_random", *args, **kwargs):
if isinstance(method, str):
method = getattr(Rotation, method)
return method(*args, **kwargs)


def get_element_abbreviation(name):
if len(name) <= 2:
return name
from mendeleev.fetch import fetch_table
el_table = fetch_table('elements')
cond = el_table['name'] == name
if not any(cond):
raise NameError(name, "does not exist")
return el_table[cond].iloc[0]['symbol']


def composition_to_spacegroup(composition):
abbreviation = get_element_abbreviation(composition)
return mendeleev.element(abbreviation).lattice_structure
2 changes: 1 addition & 1 deletion pyiron_continuum/damask/regrid.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def grid_coords_point_initial(self):
@cached_property
def d5Out(self):
d5Out = damask.Result(self.load_name)
increments = int(d5Out.increments[-1].split("_")[-1])
increments = int(str(d5Out.increments[-1]).split("_")[-1])
d5Out = d5Out.view(increments=increments)
return d5Out

Expand Down
8 changes: 6 additions & 2 deletions pyiron_continuum/project.py
Original file line number Diff line number Diff line change
Expand Up @@ -56,12 +56,16 @@ def material(rotation, elements, phase, homogenization):
return DAMASKCreator.material(rotation, elements, phase, homogenization)

@staticmethod
def phase(composition, lattice, output_list, elasticity, plasticity):
def phase(composition, lattice, elasticity, plasticity, output_list=None):
warnings.warn(
"Setting phase via project creator is deprecated. Use job.set_phase instead"
)
return DAMASKCreator.phase(
composition, lattice, output_list, elasticity, plasticity
composition=composition,
lattice=lattice,
output_list=output_list,
elasticity=elasticity,
plasticity=plasticity
)

@staticmethod
Expand Down
12 changes: 8 additions & 4 deletions pyiron_continuum/toolkit.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
from pyiron_base import Toolkit, Project, JobFactoryCore
from pyiron_continuum.fenics.job.generic import Fenics
from pyiron_continuum.fenics.job.elastic import FenicsLinearElastic
from pyiron_continuum.project import DAMASKCreator
from pyiron_continuum.damask.factory import Create as DAMASKCreator
from pyiron_continuum.schroedinger.schroedinger import TISE
from pyiron_continuum.mesh import RectMesh
from pyiron_continuum.schroedinger.potentials import Sinusoidal, SquareWell
Expand Down Expand Up @@ -99,7 +99,7 @@ def Homogenization(method, parameters):
return DAMASKCreator.homogenization(method, parameters)

@staticmethod
def Phase(composition, lattice, output_list, elasticity, plasticity):
def Phase(composition, lattice, elasticity, plasticity, output_list=None):
"""
returns a dictionary describing the phases for damask
Args:
Expand All @@ -123,8 +123,12 @@ def Phase(composition, lattice, output_list, elasticity, plasticity):
xi_inf_sl=[63e6])
"""
return DAMASKCreator.phase(
composition, lattice, output_list, elasticity, plasticity
)
composition=composition,
lattice=lattice,
output_list=output_list,
elasticity=elasticity,
plasticity=plasticity,
)

@staticmethod
def Elasticity(**kwargs):
Expand Down
4 changes: 2 additions & 2 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,8 @@
install_requires=[
'matplotlib==3.9.1',
'numpy==1.26.4',
'pyiron_base==0.9.5',
'pyiron_snippets==0.1.2',
'pyiron_base==0.9.10',
'pyiron_snippets==0.1.3',
'scipy==1.14.0',
'sympy==1.12.1'
],
Expand Down
2 changes: 1 addition & 1 deletion tests/integration/damask/test_backward_compatibility.py
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ def get_load_step(reduction_speed, reduction_height, reduction_outputs):
}

job_name = "multiple_rolling"
job = self.project.create.job.Damask(job_name + "_0")
job = self.project.create.job.DAMASK(job_name + "_0")
plasticity = self.get_plasticity_phenopowerlaw()
grains = 4
phase = self.get_phase_aluminum(self._get_elasticity(), plasticity)
Expand Down
7 changes: 7 additions & 0 deletions tests/unit/damask/test_damaskjob.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import unittest
from pyiron_base._tests import PyironTestCase
from pyiron_continuum import Project
from pyiron_continuum.damask.factory import composition_to_spacegroup


class TestDamask(PyironTestCase):
Expand Down Expand Up @@ -60,6 +61,12 @@ def test_set_phase(self):
)
self.assertIsInstance(job.input.phase, dict)

def test_composition_to_spacegroup(self):
self.assertEqual(composition_to_spacegroup("Aluminum"), "FCC")
self.assertEqual(composition_to_spacegroup("Iron"), "BCC")
self.assertEqual(composition_to_spacegroup("Magnesium"), "HEX")
self.assertRaises(NameError, composition_to_spacegroup, "Frodo")

@classmethod
def tearDownClass(cls):
cls.project.remove(enable=True)
Expand Down

0 comments on commit 1f02d2e

Please sign in to comment.