diff --git a/VERSION b/VERSION index 002deaea7..ee4230d4f 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -v3.0.0-alpha-594-g46e5023f8 +v3.0.0-alpha-615-gfce116aa8 diff --git a/env/DAMASK.csh b/env/DAMASK.csh index 5529eac23..cc61449d2 100644 --- a/env/DAMASK.csh +++ b/env/DAMASK.csh @@ -51,4 +51,4 @@ else setenv PYTHONPATH $DAMASK_ROOT/python:$PYTHONPATH endif setenv MSC_ROOT -setenv MARC_VERSION +setenv MSC_VERSION diff --git a/installation/mods_MarcMentat/apply_DAMASK_modifications.py b/installation/mods_MarcMentat/apply_DAMASK_modifications.py index 51f5e2312..407c33558 100755 --- a/installation/mods_MarcMentat/apply_DAMASK_modifications.py +++ b/installation/mods_MarcMentat/apply_DAMASK_modifications.py @@ -7,15 +7,15 @@ from pathlib import Path import damask -marc_version = float(damask.environment.options['MSC_VERSION']) -if int(marc_version) == marc_version: - marc_version = int(marc_version) +msc_version = float(damask.environment.options['MSC_VERSION']) +if int(msc_version) == msc_version: + msc_version = int(msc_version) msc_root = Path(damask.environment.options['MSC_ROOT']) damask_root = damask.environment.root_dir parser = argparse.ArgumentParser( description='Apply DAMASK modification to MSC.Marc/Mentat', - epilog = f'MSC_ROOT={msc_root} and MSC_VERSION={marc_version} (from {damask_root}/env/CONFIG)') + epilog = f'MSC_ROOT={msc_root} and MSC_VERSION={msc_version} (from {damask_root}/env/CONFIG)') parser.add_argument('--editor', dest='editor', metavar='string', default='vi', help='Name of the editor for MSC.Mentat (executable)') @@ -24,7 +24,7 @@ def copy_and_replace(in_file,dst): with open(in_file) as f: content = f.read() content = content.replace('%INSTALLDIR%',str(msc_root)) - content = content.replace('%VERSION%',str(marc_version)) + content = content.replace('%VERSION%',str(msc_version)) content = content.replace('%EDITOR%', parser.parse_args().editor) with open(dst/Path(in_file).name,'w') as f: f.write(content) @@ -32,36 +32,36 @@ def copy_and_replace(in_file,dst): print('adapting Marc tools...\n') -src = damask_root/f'installation/mods_MarcMentat/{marc_version}/Marc_tools' -dst = msc_root/f'marc{marc_version}/tools' +src = damask_root/f'installation/mods_MarcMentat/{msc_version}/Marc_tools' +dst = msc_root/f'marc{msc_version}/tools' for in_file in glob.glob(str(src/'*damask*')) + [str(src/'include_linux64')]: copy_and_replace(in_file,dst) print('adapting Mentat scripts and menus...\n') -src = damask_root/f'installation/mods_MarcMentat/{marc_version}/Mentat_bin' -dst = msc_root/f'mentat{marc_version}/bin' +src = damask_root/f'installation/mods_MarcMentat/{msc_version}/Mentat_bin' +dst = msc_root/f'mentat{msc_version}/bin' for in_file in glob.glob(str(src/'*[!.original]')): copy_and_replace(in_file,dst) -src = damask_root/f'installation/mods_MarcMentat/{marc_version}/Mentat_menus' -dst = msc_root/f'mentat{marc_version}/menus' +src = damask_root/f'installation/mods_MarcMentat/{msc_version}/Mentat_menus' +dst = msc_root/f'mentat{msc_version}/menus' for in_file in glob.glob(str(src/'job_run.ms')): copy_and_replace(in_file,dst) print('compiling Mentat menu binaries...') -executable = str(msc_root/f'mentat{marc_version}/bin/mentat') -menu_file = str(msc_root/f'mentat{marc_version}/menus/linux64/main.msb') +executable = str(msc_root/f'mentat{msc_version}/bin/mentat') +menu_file = str(msc_root/f'mentat{msc_version}/menus/linux64/main.msb') os.system(f'xvfb-run {executable} -compile {menu_file}') print('setting file access rights...\n') -for pattern in [msc_root/f'marc{marc_version}/tools/*damask*', - msc_root/f'mentat{marc_version}/bin/submit?', - msc_root/f'mentat{marc_version}/bin/kill?']: +for pattern in [msc_root/f'marc{msc_version}/tools/*damask*', + msc_root/f'mentat{msc_version}/bin/submit?', + msc_root/f'mentat{msc_version}/bin/kill?']: for f in glob.glob(str(pattern)): os.chmod(f,0o755) diff --git a/python/damask/_configmaterial.py b/python/damask/_configmaterial.py index 0f8d4efa1..ed45f2662 100644 --- a/python/damask/_configmaterial.py +++ b/python/damask/_configmaterial.py @@ -69,8 +69,8 @@ class ConfigMaterial(Config): _,idx = np.unique(np.hstack(list({**constituents_,**kwargs_}.values())),return_index=True,axis=0) idx = np.sort(idx) - constituents_ = {k:v[idx].squeeze() for k,v in constituents_.items()} - kwargs_ = {k:v[idx].squeeze() for k,v in kwargs_.items()} + constituents_ = {k:np.atleast_1d(v[idx].squeeze()) for k,v in constituents_.items()} + kwargs_ = {k:np.atleast_1d(v[idx].squeeze()) for k,v in kwargs_.items()} return ConfigMaterial().material_add(constituents_,**kwargs_) @@ -268,6 +268,7 @@ class ConfigMaterial(Config): @staticmethod def _constituents(N=1,**kwargs): """Construct list of constituents.""" + N_material=1 for v in kwargs.values(): if hasattr(v,'__len__') and not isinstance(v,str): N_material = len(v) diff --git a/python/damask/_geom.py b/python/damask/_geom.py index 48f022805..d3b375bf6 100644 --- a/python/damask/_geom.py +++ b/python/damask/_geom.py @@ -266,13 +266,9 @@ class Geom: labels_ = [labels] if isinstance(labels,str) else labels unique,unique_inverse = np.unique(np.hstack([table.get(l) for l in labels_]),return_inverse=True,axis=0) - if len(unique) == grid.prod(): - ma = np.arange(grid.prod()) - else: - from_ma = pd.unique(unique_inverse) - sort_idx = np.argsort(from_ma) - idx = np.searchsorted(from_ma,unique_inverse,sorter = sort_idx) - ma = np.arange(from_ma.size)[sort_idx][idx] + + ma = np.arange(grid.prod()) if len(unique) == grid.prod() else \ + np.arange(unique.size)[np.argsort(pd.unique(unique_inverse))][unique_inverse] return Geom(ma.reshape(grid,order='F'),size,origin,util.execution_stamp('Geom','from_table')) diff --git a/python/tests/test_ConfigMaterial.py b/python/tests/test_ConfigMaterial.py index d0bcd2a56..0f2b6a90c 100644 --- a/python/tests/test_ConfigMaterial.py +++ b/python/tests/test_ConfigMaterial.py @@ -87,3 +87,7 @@ class TestConfigMaterial: c = m['constituents'][0] assert m['c'] == 1 and c['b'] == 0 and c['a'] == [i,1] + def test__constituents(self): + c = ConfigMaterial._constituents(c=1,v=[2,3]) + assert c[0][0]['c'] == c[1][0]['c'] == 1 + assert c[0][0]['v'] == c[1][0]['v'] -1 ==2