diff --git a/README.md b/README.md index c2604cc..3c8a9d0 100644 --- a/README.md +++ b/README.md @@ -136,3 +136,9 @@ and has [API documentation available online](https://libensemble.readthedocs.io/ [Tasmanian](https://github.com/ORNL/TASMANIAN) is a collection of robust libraries for high dimensional integration and interpolation as well as parameter calibration. The included generator and tests were part of libEnsemble through v1.5.0. + +14. #### ensemblesweep + *Workflow Software* + + ``ensemblesweep`` is a small library for parallel parameter sweeps of objective functions or executables. + See ``ensemblesweep/README.md`` for more information. \ No newline at end of file diff --git a/ensemblesweep/.gitattributes b/ensemblesweep/.gitattributes new file mode 100644 index 0000000..40adb61 --- /dev/null +++ b/ensemblesweep/.gitattributes @@ -0,0 +1,3 @@ +# SCM syntax highlighting & preventing 3-way merges +pixi.lock merge=binary linguist-language=YAML linguist-generated=true -diff +*.lock filter=lfs diff=lfs merge=lfs -text diff --git a/ensemblesweep/.gitignore b/ensemblesweep/.gitignore new file mode 100644 index 0000000..238654b --- /dev/null +++ b/ensemblesweep/.gitignore @@ -0,0 +1,7 @@ +# pixi environments +.pixi/* +!.pixi/config.toml +*.egg-info +*.stat +*.x +*__pycache__/ \ No newline at end of file diff --git a/ensemblesweep/.pre-commit-config.yaml b/ensemblesweep/.pre-commit-config.yaml new file mode 100644 index 0000000..de927cf --- /dev/null +++ b/ensemblesweep/.pre-commit-config.yaml @@ -0,0 +1,34 @@ +repos: +- repo: https://github.com/pre-commit/pre-commit-hooks + rev: v6.0.0 + hooks: + - id: end-of-file-fixer + exclude: ^(.*\.xml|.*\.svg)$ + - id: trailing-whitespace + exclude: ^(.*\.xml|.*\.svg)$ + +- repo: https://github.com/pycqa/isort + rev: 7.0.0 + hooks: + - id: isort + args: [--profile=black, --line-length=120] + +- repo: https://github.com/psf/black + rev: 25.12.0 + hooks: + - id: black + args: [--line-length=120] + +- repo: https://github.com/PyCQA/flake8 + rev: 7.3.0 + hooks: + - id: flake8 + args: [--max-line-length=120] + +- repo: https://github.com/asottile/blacken-docs + rev: 1.20.0 + hooks: + - id: blacken-docs + additional_dependencies: [black==22.12.0] + files: ^(.*\.py|.*\.rst)$ + args: [--line-length=120] diff --git a/ensemblesweep/README.md b/ensemblesweep/README.md new file mode 100644 index 0000000..59eadc1 --- /dev/null +++ b/ensemblesweep/README.md @@ -0,0 +1,131 @@ + +============= +ensemblesweep +============= + +``ensemblesweep`` is a small library based on [libEnsemble](https://libensemble.readthedocs.io/en/latest/) +for parallel parameter sweeps of objective functions or executables. + +Installation +============ + +In the project directory: + +```bash +pip install . +``` + +Or to use the provided [Pixi](https://pixi.prefix.dev/latest/) environment: + +```bash +pixi shell +``` + +Usage +===== + +Simple usage +------------ + +1. Specify any number of iterable inputs with arbitrary parameter names to a ``Data`` object. + +2. Specify an objective function to the ``Sweep`` object. Provide the input data. + +3. Optionally, specify the number of worker processes. The default is the number of local cores. + +4. Run the sweep. All instances are run in parallel. + +```python + +from ensemblesweep import Sweep, Data + +# Define the function to be evaluated +def my_function(variable_1, variable_2, variable_3): + return float(variable_2) * np.sum(variable_3) + variable_1 + +data = Data( + variable_1=random.sample(["param1", "param2", "param3"]*6, 6), + variable_2=random.sample(range(10), 4), + variable_3 = np.random.uniform(lb, ub, (3, 3)) +) + +# Create a sweep object +sweep = Sweep( + objective_function=my_function, + input_data=data, + num_workers=4 +) + +if __name__ == "__main__": + + sweep.run() + print(sweep.results) +``` + +Executables +----------- + + +- Specify an *executable* to the ``Sweep`` object. + - The ``Data`` parameters will be passed as arguments to the executable in the order they are defined. + - The output of the executable will be read: + - from the file specified by ``objective_output`` (if provided). + - or, if ``objective_output`` is not specified, the last line of the executable's stdout. + +```python + + # an objective can also be an *executable* + objective_path = os.path.join(os.path.dirname(__file__), "forces.x") + + data = Data( + num_particles=random.sample(range(100, 1000, 10), 10), + num_steps = [10, 100, 1000], + rand_seed = 100, + kill_rate = [0.01, 0.1, 0.5] + ) + + # each of the samples will be given to the executable as arguments, in the exact order. Parallel runs. + sweep = Sweep( + objective_executable=objective_path, + objective_output="forces.stat", + input_data=data, + num_workers=4 + ) + + sweep.run() +``` + +Additional Features +------------------- + +- Run a subset of the total points. This also updates the estimated time (in seconds) to run the entire sweep. + +```python + + if __name__ == "__main__": + + sweep.run(10) + + # estimated time is in seconds, for the entire sweep + if sweep.estimated_time() > 10: + print("Estimated time is too long, only doing a little bit") + sweep.run(10) # run 10 in parallel. Max parallelism is number of cores + else: + print("Estimated time is acceptable, continuing") + sweep.run() +``` + +- Estimate the runtime for a subset of the total points. Parallelism is considered. + +```python + + sweep.estimated_time(4) +``` + +- Get results as NumPy + +```python + + # print the results, numpy + print(sweep.results.to_numpy()) +``` diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..4f5c2f8 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 9 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 9 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 10 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 8 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 13 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 9 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 11 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 10 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 8 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/load_input.txt new file mode 100644 index 0000000..75efa3f --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..009851c --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 19 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 22 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 19 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 18 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 18 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 19 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 19 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/load_input.txt new file mode 100644 index 0000000..75efa3f --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..caef0cd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 31 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 28 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 31 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 31 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 29 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 31 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/load_input.txt new file mode 100644 index 0000000..75efa3f --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..65528e1 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 36 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 34 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 36 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 36 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 37 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 34 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 36 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/load_input.txt new file mode 100644 index 0000000..75efa3f --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 30 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..cf938c9 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 10 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 12 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 12 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 11 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 9 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 11 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 13 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 13 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 11 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/load_input.txt new file mode 100644 index 0000000..3bd70fa --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..d0d4cd8 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 19 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 20 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 21 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/load_input.txt new file mode 100644 index 0000000..3bd70fa --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..00386cb --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/load_input.txt new file mode 100644 index 0000000..3bd70fa --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..2b8cf54 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 34 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 36 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 34 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/load_input.txt new file mode 100644 index 0000000..3bd70fa --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 50 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..9144a97 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 10 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 11 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 8 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 7 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 11 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 10 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 10 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 10 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 12 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/load_input.txt new file mode 100644 index 0000000..13116df --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..9cb6fe9 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 21 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 22 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 21 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 23 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 21 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 21 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 24 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 18 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 18 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/load_input.txt new file mode 100644 index 0000000..13116df --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..30fba1f --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 31 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 29 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 30 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 31 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 31 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 29 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/load_input.txt new file mode 100644 index 0000000..13116df --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/Chemistry.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/Chemistry.txt new file mode 100644 index 0000000..49b0396 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/Chemistry.txt @@ -0,0 +1,18 @@ +CHEMISTRY INPUT FILE +species 1 + +*****Vacancy type defect***** +Name: Vacancy +Density: 4.67e-4 +Prefactor: 1.71e-4 +Source: 0.d0 +Formation: 0.61 +Migration: 0.67 +AtomMass: -1 +Absorbable: T +DipoleTensor: + -2.62 0.0 0.0 + 0.0 -2.62 0.0 + 0.0 0.0 -2.62 + +END FILE diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/dislocation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/dislocation_input.txt new file mode 100644 index 0000000..c14fb0a --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/dislocation_input.txt @@ -0,0 +1,109 @@ +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 60 +Miller: 1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 33 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 38 +Miller: 1.d00 -1.d00 1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 37 +Miller: 1.d00 -1.d00 1.d00 +Burgers: -1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 37 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 0.d00 1.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 36 +Miller: 1.d00 1.d00 -1.d00 +Burgers: -1.d00 1.d00 0.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 34 +Miller: 1.d00 1.d00 -1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 99.0 99.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 33 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 1.d00 0.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 35 +Miller: -1.d00 1.d00 1.d00 +Burgers: 0.d00 -1.d00 1.d00 +Properties: 1.0 135.0 135.0 + +Position: Random +Layer: 1 +Grain: 1 +Type: 3 +Number: 41 +Miller: -1.d00 1.d00 1.d00 +Burgers: 1.d00 0.d00 1.d00 +Properties: 1.0 135.0 135.0 + +STOP ENDDEFECT diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/load_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/load_input.txt new file mode 100644 index 0000000..13116df --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/load_input.txt @@ -0,0 +1,145 @@ +*Loading History File +iLoadStages: 7 ! Number of loading conditions +iLoadDurationInSteps: 1 ! (0=Change conditions by time intervals, 1=Change conditions by step intervals) + +>>>>>>>>>>>Load Condition 1<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 2<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 3<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 4<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + +>>>>>>>>>>>Load Condition 5<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 9.378655316148335d10 -6.1701292373477355d07 -4.889040410594356d09 + -6.1701292373476386d07 9.209767819031291d10 1.122438646301772d09 + -4.889040410594357d09 1.122438646301772d09 4.591231849403502d10 + +>>>>>>>>>>>Load Condition 6<<<<<<<<<<<<<<<<< +Duration: 70 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + + +>>>>>>>>>>>Load Condition 7<<<<<<<<<<<<<<<<< +Duration: 100000000000 ! Amount of steps or time to apply this loading condition +Temperature: 650.0 +*Mixed Flags + 2 2 2 + 2 2 2 + 2 2 2 +*Applied Strain rate ! Increment of strain for load=1 + 0.d5 0.d0 0.d9 + 0.d0 0.d0 0.d6 + 0.d9 0.d6 0.0d8 +*Applied Stress rate (in Pa) ! Increment of stress for load=2 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 + 0.d0 0.d0 0.d0 +*Initial Applied Stress (in Pa) ! Initial pre-load (pre-stress) + 0.d9 0.d8 0.d9 + 0.d8 0.d8 0.d9 + 0.d9 0.d9 0.d9 + diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/material_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/material_input.txt new file mode 100644 index 0000000..acc67bd --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/material_input.txt @@ -0,0 +1,23 @@ +*------------------------------------------------------------------------------------------------------------------------ +* Material properties +*------------------------------------------------------------------------------------------------------------------------ +numMaterials: 1 ! Number of Materials +>>>>>>>>>>>>MATERIAL 1: Al <<<<<<<<<<<<<<<<<<<<<<< ! One material block for each of numMaterials +*Elastic stiffness of single crystal (MPa) + 114651.0 59919.0 59919.0 0. 0. 0. + 59919.0 114651.0 59919.0 0. 0. 0. + 59919.0 59919.0 114651.0 0. 0. 0. + 0. 0. 0. 30767.0 0. 0. + 0. 0. 0. 0. 30767.0 0. + 0. 0. 0. 0. 0. 30767.0 +crystaltype: 1 ! (1 FCC; 2 BCC; 3 HCP; 4 HCP1; 5 HCP2; 0 User defined) +Latticeparameter: 4.05D-10 ! Lattice spacing (m) +Latticeratios: 3.21 3.21 5.21 ! Lattice ratios for HCP +Latticeangles: 90. 90. 120. ! Lattice angles for HCP (deg) +* Pierls Barrier (MPa), mobility law, Edge and Screw mobilities (Pa.s) for slip modes +nslipmodes: 1 ! Number of active slip modes +active: 1 ! Ids of the active slip modes +110: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of close packed slip +default: 1.0 1.0 1.0 0 5.6d-6 1.186d-5 !Properties of default modes e.g. junctions +a_core: 0.5d0 ! Dislocation core radius parameter (lattice units) +iSolidPhase: 1 ! 1=>Solid , 0=>non-solid (dislocations vanish) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/run.sh b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/run.sh new file mode 100755 index 0000000..91d700b --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/run.sh @@ -0,0 +1,30 @@ +#!/bin/bash +#Clean and Run shell script + +if [ -z $1 ] +then + echo "ERROR: You must enter the number of processors to use" +else + mkdir -p nodes segs segs/spline fields debug past + echo "Removing nodes..." + cd nodes/ + rm *.* + echo "Removing segments..." + cd ../segs/ + rm *.* + cd spline/ + rm *.* + echo "Removing fields..." + cd ../../fields/ + rm *.* + echo "Removing debug files..." + cd ../debug/ + rm *.* + echo "Run program" + cd ../ + rm fort.* + rm *.dat + rm PFTimes* + rm fr_log + mpirun -n $1 /global/common/software/m5190/GD3/GD3_Source_December2025/gd3 +fi diff --git a/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/simulation_input.txt b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/simulation_input.txt new file mode 100644 index 0000000..4b17a8d --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/simulation_input.txt @@ -0,0 +1,44 @@ +*------------------------------------------------------------------------------------------------------------------------ +* New simulation or Restart previous simulation +*------------------------------------------------------------------------------------------------------------------------ +newSimulation: 1 ! Restart simulation (=0) +ILOOP_TIME: 12001 ! Number of simulation steps +DTIME: 1.D-13 1.0D-13 ! Max/Min time step increment (s) +*------------------------------------------------------------------------------------------------------------------------ +* Simulated Volume information +*------------------------------------------------------------------------------------------------------------------------ +volume: 2688 2688 336 ! Simulation size (x,y) in lattice size +fourierPoints: 64 64 8 ! Number of Fourier points in each direction +iGeometry: 1 84 1.d2 ! (0=Bulk,1=Thin Film,2=Micropillar), vacuum width & stiffness ratio +numlayers: 1 ! Number of layers +>>>>>>>>>>LAYER 1: Al<<<<<<<<<<<<<< ! Layer id and description +thickness: 1.0 ! Layer thickness (z) relative to box +material: 1 ! ID of base material for this layer +numgrains: 1 ! Number of grains in the layer +*Grain ID, Grain seed, and Grain euler angles (ZXZ convention) for specifying the grain structure +grain1 1 1000 1000 1000 1.83195373769792 0.640522312679425 0.463647609000806 +iRandomGrains: 0 ! Number of randomly positioned grains +*------------------------------------------------------------------------------------------------------------------------ +* Simulation conditions and physics packages +*------------------------------------------------------------------------------------------------------------------------ +iPrecipitates: 0 ! Precipitates +iLatentCoef: 0 ! Coefficent for latent hardening simulations +iDiffraction: 0 ! XRD line analysis frequency +iTranmission: 0 ! Transmission at boundaries +iCrossSlip: 0 ! Cross-slip +iChemistry 2 ! Chemistry solutions (1=chemistry, 2=chemistry+climb) +iInteraction: 1 ! Dislocations interactions +iInertial: 0 ! Inertial forces for high strain-rates +iShortRange: 1 ! Neighbors stress calculation (always set to 1 for simulations) +iNLMobility: 0 +iMPF: 0 +*------------------------------------------------------------------------------------------------------------------------ +* Outputs +*------------------------------------------------------------------------------------------------------------------------ +iOutFreq: 2000 ! Output dislocations and macroscopic data frequency +iPastFreq: 2000 ! Output past files (for restarting simuations) frequency +ioutInt: 100000 ! Output full field Strains and stresses frequency +iDebugMode: 0 ! Debug mode option (1: writes everything, 0: writes nothing) +*------------------------------------------------------------------------------------------------------------------------ +* Optional inputs (unstructured) +*------------------------------------------------------------------------------------------------------------------------ diff --git a/ensemblesweep/examples/andreas/PROD_nersc_gd3_registry.txt b/ensemblesweep/examples/andreas/PROD_nersc_gd3_registry.txt new file mode 100644 index 0000000..53565b5 --- /dev/null +++ b/ensemblesweep/examples/andreas/PROD_nersc_gd3_registry.txt @@ -0,0 +1,13 @@ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc10/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc20/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc30/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load30/NumDisloc35/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc10/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc20/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc30/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load50/NumDisloc35/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc10/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc20/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc30/Repeat1/ +/global/homes/j/jmlarson/andreas/ForJeff/libe-community-examples/ensemblesweep/examples/andreas/PROD_UltraThinFilm_WithClimb/Load70/NumDisloc35/Repeat1/ + diff --git a/ensemblesweep/examples/andreas/check_if_converged.py b/ensemblesweep/examples/andreas/check_if_converged.py new file mode 100644 index 0000000..3e9c965 --- /dev/null +++ b/ensemblesweep/examples/andreas/check_if_converged.py @@ -0,0 +1,128 @@ +''' +check if the simulation stored in a provided folder has converged, should be +continued, or should be restarted. + +When run, this code will print out one of three keywords: + +1. continue +2. converged +3. restart + +Continue will continue a given simulation. Restart will be called if no PAST file exists. + +Analysis will be done by checking the data in the ddd-results.dat file. +''' +import argparse +import os +import math + +def compute_windowed_rmse(data: list[float]) -> float: + mean_val = sum(data) / len(data) + sum_mean_squared_data = math.sqrt(sum([(dat - mean_val)**2 for dat in data]) / (len(data) - 1)) + return mean_val, sum_mean_squared_data + +def converged(data, cutoff): + mean, rmse = compute_windowed_rmse(data) + return rmse / mean < cutoff + +def check_convergence(dddresults_location: str, max_time_steps: float, lookback: int, convergence_limit: float) -> str: + ''' check whether the simulation has converged. ''' + + if not os.path.exists(dddresults_location): + return 'restart', 'ddd-results.dat file does not exist.' + + time = [] + junc = [] + dens = [] + epvm = [] + + with open(dddresults_location, 'r') as file: + lines = file.readlines()[1:] + + for line in lines: + line = line.strip().split() + + time.append(float(line[0])) + dens.append(float(line[18])) + junc.append(float(line[19])) + epvm.append(float(line[15])) + + # checking time requirements + if max(time) >= max_time_steps: + return 'converged', 'exceeded maximum time' + + if len(time) < lookback: + return "continue", 'didnt reach minimum time to check for convergence.' + + # checking convergence + data = [epvm, junc, dens] + converge = all([converged(dat[-lookback:], cutoff=convergence_limit) for dat in data]) + + if converge: + return 'converged', 'all convergence metrics have been reached' + + else: + return 'continue', f'one of the convergence metrics didnt exceed the cutoff: {convergence_limit}' + +def make_decision(args): + # check if past folder exists + if not os.path.exists(os.path.join(args.folder, 'past')): + return 'restart', 'couldnt find past folder' + + # check if the past folder is empty + past_files = os.listdir(os.path.join(args.folder, 'past')) + if len(past_files) == 0: + return 'restart', 'past folder is empty' + + # else make a convergence decision + return check_convergence( + dddresults_location=os.path.join(args.folder, 'ddd-results.dat'), + max_time_steps=args.max_time_steps, + lookback=args.lookback, + convergence_limit=args.convergence_limit, + ) + +def check_convergence( + max_time_steps: int, + folder: str, + lookback: int, + convergence_limit: float, + ): + ''' equivalent to the main call but will return a boolean ''' + import dataclasses + @dataclasses.dataclass + class ArgsInput: + max_time_steps: int + folder: str + lookback: int + convergence_limit: float + verbose: bool + + decision, logic = make_decision( + ArgsInput( + max_time_steps = max_time_steps, + folder = folder, + lookback = lookback, + convergence_limit = convergence_limit, + verbose = False + ) + ) + + return decision + +if __name__ == "__main__": + parser = argparse.ArgumentParser() + parser.add_argument('--max_time_steps', type=int, help="The maximum number of time steps.") + parser.add_argument('--folder', type=str, help='folder to check.') + parser.add_argument('--verbose', action='store_true', help='whether to print reasons') + parser.add_argument('--lookback', type=int, default=3, help='how many time steps to lookback.') + parser.add_argument('--convergence_limit', type=float, default=0.05, help='The maximum value for the ratio between the standard deviation and the mean value that is acceptable for convergence.') + args = parser.parse_args() + + decision, logic = make_decision(args) + + if args.verbose: + print(f'{decision}: {logic}') + + else: + print(decision) \ No newline at end of file diff --git a/ensemblesweep/examples/andreas/simulation_start_utility.py b/ensemblesweep/examples/andreas/simulation_start_utility.py new file mode 100644 index 0000000..33d8078 --- /dev/null +++ b/ensemblesweep/examples/andreas/simulation_start_utility.py @@ -0,0 +1,50 @@ +''' +A helper utility for preprocessing the simulations +''' + +import check_if_converged +import os + +def read_max_time_steps(simulation_input_location: str) -> int: + with open(simulation_input_location, 'r') as fil: + line = fil.readlines()[4] + + return line.split()[1] + +def update_input_deck(filename): + with open(filename, 'r') as f: + data = f.readlines() + + data[3] = "newSimulation: 0 ! Restart simulation (=0)" + + # Perform your edits here + with open(filename, 'w') as f: + f.writelines(data) + + +def prepare_sim(folder: str) -> bool: + ''' + prepare a simulation by adjusting input files and decided if the simulation + needs to start. + ''' + # read the max time steps for this simulation + max_time_steps = read_max_time_steps( + simulation_input_location=os.path.join(folder, 'simulation_input.txt') + ) + + # check convergence + is_converged = check_if_converged.check_convergence( + max_time_steps = max_time_steps, + folder = folder, + lookback = 6, + convergence_limit = 0.05, + ) + + if is_converged.lower() == 'restart': + return True + + if is_converged.lower() == 'converged': + return False + + # update the files to continue a simulation + update_input_deck(os.path.join(folder, "simulation_input.txt")) diff --git a/ensemblesweep/examples/andreas/sweep_for_andreas.sh b/ensemblesweep/examples/andreas/sweep_for_andreas.sh new file mode 100755 index 0000000..201e918 --- /dev/null +++ b/ensemblesweep/examples/andreas/sweep_for_andreas.sh @@ -0,0 +1,14 @@ +#!/bin/bash +#SBATCH -A m5190 +#SBATCH --qos=debug +#SBATCH --time=0:30:00 +#SBATCH -N 1 +#SBATCH -J gd3_sweep +#SBATCH -C cpu +#SBATCH --mail-type=ALL +#SBATCH --mail-user=jmlarson@anl.gov + +module load python +conda activate /global/homes/j/jmlarson/.conda/envs/GD3-sims-dev/ + +python sweep_gd3.py diff --git a/ensemblesweep/examples/andreas/sweep_gd3.py b/ensemblesweep/examples/andreas/sweep_gd3.py new file mode 100644 index 0000000..090b498 --- /dev/null +++ b/ensemblesweep/examples/andreas/sweep_gd3.py @@ -0,0 +1,106 @@ +#!/usr/bin/env python3 + +import os +import subprocess +from pathlib import Path + +from ensemblesweep import Sweep, Data +import simulation_start_utility + + +REGISTRY_FILE = "PROD_nersc_gd3_registry.txt" +CPUS_PER_SIM = 16 +NUM_NODES = 3 +CPUS_PER_NODE = 48 + + +def read_registry(registry_file): + """Read nonempty, non-comment lines from the registry file.""" + folders = [] + with open(registry_file, "r", encoding="utf-8") as f: + for line in f: + line = line.strip() + if not line or line.startswith("#"): + continue + folders.append(line) + return folders + + +def run_simulation(folder): + """ + Sweep objective for a single folder. + + Returns a small status dictionary so results are easy to inspect later. + """ + folder = Path(folder).resolve() + + if not folder.is_dir(): + return { + "folder": str(folder), + "prepared": False, + "ran": False, + "returncode": None, + "status": "missing_folder", + } + + should_run = simulation_start_utility.prepare_sim(folder=str(folder)) + + if not should_run: + return { + "folder": str(folder), + "prepared": False, + "ran": False, + "returncode": None, + "status": "already_done", + } + + run_script = folder / "run.sh" + if not run_script.exists(): + return { + "folder": str(folder), + "prepared": True, + "ran": False, + "returncode": None, + "status": "missing_run_sh", + } + + cmd = ["bash", "./run.sh", str(CPUS_PER_SIM)] + + completed = subprocess.run( + cmd, + cwd=folder, + check=False, + text=True, + ) + + return { + "folder": str(folder), + "prepared": True, + "ran": True, + "returncode": completed.returncode, + "status": "success" if completed.returncode == 1 else "failed", + } + + +def main(): + folders = read_registry(REGISTRY_FILE) + + data = Data( + folder=folders, + ) + + sweep = Sweep( + objective_function=run_simulation, + input_data=data, + # num_workers = (NUM_NODES * CPUS_PER_NODE) // CPUS_PER_SIM + num_workers = 1 + ) + + sweep.run(1) + + print(sweep.results) + print(sweep.results.to_numpy()) + + +if __name__ == "__main__": + main() diff --git a/ensemblesweep/examples/build_forces.sh b/ensemblesweep/examples/build_forces.sh new file mode 100755 index 0000000..b8b379e --- /dev/null +++ b/ensemblesweep/examples/build_forces.sh @@ -0,0 +1,54 @@ +#!/bin/bash + +# ------------------------------------------------- +# Building flat MPI +# ------------------------------------------------- + +# GCC +mpicc -O3 -o forces.x forces.c -lm + +# Intel +# mpiicc -O3 -o forces.x forces.c + +# Cray +# cc -O3 -o forces.x forces.c + +# ------------------------------------------------- +# Building with OpenMP for CPU +# ------------------------------------------------- + +# GCC +# mpicc -O3 -fopenmp -o forces.x forces.c -lm + +# Intel +# mpiicc -O3 -qopenmp -o forces.x forces.c + +# Cray / Intel (for CCE OpenMP is recognized by default) +# cc -O3 -qopenmp -o forces.x forces.c + +# xl +# xlc_r -O3 -qsmp=omp -o forces.x forces.c + +# Aurora: Intel oneAPI (Clang based) Compiler +# mpicc -O3 -fiopenmp -o forces_cpu.x forces.c + +# ------------------------------------------------- +# Building with OpenMP for target device (e.g. GPU) +# ------------------------------------------------- + +# Aurora: Intel oneAPI (Clang based) Compiler (JIT compiled for device) +# mpicc -DGPU -O3 -fiopenmp -fopenmp-targets=spir64 -o forces.x forces.c + +# Frontier (AMD ROCm compiler) +# cc -DGPU -I${ROCM_PATH}/include -L${ROCM_PATH}/lib -lamdhip64 -fopenmp -O3 -o forces.x forces.c + +# Nvidia (nvc) compiler with mpicc and on Cray system with target (Perlmutter) +# mpicc -DGPU -O3 -fopenmp -mp=gpu -o forces.x forces.c +# cc -DGPU -Wl,-znoexecstack -O3 -fopenmp -mp=gpu -target-accel=nvidia80 -o forces.x forces.c + +# xl (plain and using mpicc on Summit) +# xlc_r -DGPU -O3 -qsmp=omp -qoffload -o forces.x forces.c +# mpicc -DGPU -O3 -qsmp=omp -qoffload -o forces.x forces.c + +# Summit with gcc (Need up to offload capable gcc: module load gcc/12.1.0) - slower than xlc +# mpicc -DGPU -Ofast -fopenmp -Wl,-rpath=/sw/summit/gcc/12.1.0-0/lib64 -lm -foffload=nvptx-none forces.c -o forces.x diff --git a/ensemblesweep/examples/forces.c b/ensemblesweep/examples/forces.c new file mode 100755 index 0000000..80cbe05 --- /dev/null +++ b/ensemblesweep/examples/forces.c @@ -0,0 +1,544 @@ +/* -------------------------------------------------------------------- + Naive Electrostatics Code Example + This is designed only as an artificial, highly configurable test + code for a libEnsemble sim func. + + Particles position and charge are initiated by a random stream. + Particles are replicated on all ranks. + Each rank computes forces for a subset of particles. + Particle force arrays are allreduced across ranks. + + Sept 2019: + Added OpenMP options for CPU and GPU. + + Jan 2022: + Use GPU preprocessor option to compile for GPU (e.g. -DGPU). + + Run executable on N procs: + + mpirun -np N ./forces.x + + Author: S Hudson. +-------------------------------------------------------------------- */ + +#include +#include +#include +#include +#include +#include + +#define min(a, b) \ + ({ __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a < _b ? _a : _b; }) + +// Flags 0 or 1 +#define PRINT_HOSTNAME_ALL_PROCS 0 +#define PRINT_PARTICLE_DECOMP 0 +#define PRINT_ALL_PARTICLES 0 +#define CHECK_THREADS 0 +#define CHECK_TARGET_DEVICE 1 +#define MAX_LINE_LENGTH 256 + +static FILE* stat_fp; + +// Return elapsed wall clock time from start/end timevals +double elapsed(struct timeval *tv1, struct timeval *tv2) { + return (double)(tv2->tv_usec - tv1->tv_usec) / 1000000 + + (double)(tv2->tv_sec - tv1->tv_sec); +} + +// Print from each thread. +int check_threads(int rank) { + #if defined(_OPENMP) + int tid, nthreads; + #pragma omp parallel private(tid, nthreads) + { + nthreads = omp_get_num_threads(); + tid = omp_get_thread_num(); + printf("Rank: %d: ThreadID: %d Num threads: %d\n", rank, tid, nthreads); + + } + #else + printf("Rank: %d: OpenMP is disabled\n", rank); + #endif + return 0; +} + +typedef struct particle { + double p[3]; // Particle position + double f[3]; // Particle force + double q; // Particle charge +}__attribute__((__packed__)) particle; + + +// Seed RNG +int seed_rand(int seed) { + srand(seed); + return 0; +} + +// Return a random number from a persistent stream +//TODO Use parallel RNG - As replicated data can currently do on first rank. +double get_rand() { + double randnum; + randnum = (double)rand()/(double)(RAND_MAX + 1.0); //[0, 1) + return randnum; +} + + +// Particles start at random locations in 10x10x10 cube +int build_system(int n, particle* parr) { + int q_range_low = -10; + int q_range_high = 10; + double extent = 10.0; + int i, dim; + + for(i=0; i= rate) { + bad_run = 1; + } + return bad_run; +} + + +int main(int argc, char **argv) { + + FILE *input_file; + char line[MAX_LINE_LENGTH]; + int num_devices; + int num_particles = 10; // default no. of particles + int num_steps = 10; // default no. of timesteps + int rand_seed = 1; // default seed + double kill_rate = 0.0; // default proportion of tasks to kill + + int rank, num_procs, k, m, p_lower, p_upper, local_n; + int step; + double compute_forces_time, comms_time, total_time; + struct timeval tstart, tend; + struct timeval compute_start, compute_end; + struct timeval comms_start, comms_end; + + double local_en, total_en; + double step_survival_rate; + int badrun = 0; + + // Try to open the file "forces_input" in read mode + input_file = fopen("forces_input", "r"); + + if (input_file) { + // If the file exists, read it line by line + while (fgets(line, sizeof(line), input_file)) { + if (sscanf(line, "num_particles = %d", &num_particles) == 1) { + continue; + } + if (sscanf(line, "num_steps = %d", &num_steps) == 1) { + continue; + } + if (sscanf(line, "rand_seed = %d", &rand_seed) == 1) { + continue; + } + if (sscanf(line, "kill_rate = %lf", &kill_rate) == 1) { + continue; + } + } + fclose(input_file); + } + + // Overwrite with command line arguments if provided + + if (argc >=2) { + num_particles = atoi(argv[1]); // No. of particles + } + + if (argc >=3) { + num_steps = atoi(argv[2]); // No. of timesteps + } + + if (argc >=4) { + rand_seed = atoi(argv[3]); // RNG seed + } + + if (argc >=5) { + kill_rate = atof(argv[4]); // Proportion of tasks to kill + } + + seed_rand(rand_seed); + step_survival_rate = pow((1-kill_rate),(1.0/num_steps)); + + particle* parr = (particle*)malloc(num_particles * sizeof(particle)); + build_system(num_particles, parr); + //printf("\n"); + + MPI_Init(&argc, &argv); + MPI_Comm_rank(MPI_COMM_WORLD, &rank); + MPI_Comm_size(MPI_COMM_WORLD, &num_procs); + + if (rank == 0) { + printf("Particles: %d\n", num_particles); + printf("Timesteps: %d\n", num_steps); + printf("MPI Ranks: %d\n", num_procs); + printf("Random seed: %d\n", rand_seed); + } + + // For multi-gpu node - use one GPU per rank i + num_devices = 0; + #if defined(_OPENMP) + num_devices = omp_get_num_devices(); + if (num_devices > 0) { + omp_set_default_device(rank % num_devices); + } + #endif + + if (PRINT_HOSTNAME_ALL_PROCS) { + MPI_Barrier(MPI_COMM_WORLD); + char processor_name[MPI_MAX_PROCESSOR_NAME]; + int name_len; + MPI_Get_processor_name(processor_name, &name_len); + printf("Proc: %d is on node %s\n", rank, processor_name); + } + + if (CHECK_THREADS) { + if (num_devices == 0) { + check_threads(rank); + } + } + + k = num_particles / num_procs; + m = num_particles % num_procs; // Remainder = no. procs with extra particle + p_lower = rank * k + min(rank, m); + p_upper = (rank + 1) * k + min(rank + 1, m); + local_n = p_upper - p_lower; + + if (PRINT_PARTICLE_DECOMP) { + MPI_Barrier(MPI_COMM_WORLD); + printf("Proc: %d has %d particles\n", rank, local_n); + } + MPI_Barrier(MPI_COMM_WORLD); + fflush(stdout); + + if (rank == 0) { + open_stat_file(); + } + + gettimeofday(&tstart, NULL); + for (step=0; step 10: + print("Estimated time is too long, only doing a little bit") + sweep.run(10) # run 10 concurrently. Max concurrency is number of cores + else: + print("Estimated time is acceptable, continuing") + sweep.run() # run all concurrently. Max concurrency is number of cores. + + sweep.estimated_time(4) # estimate time for 4 points. Parallelism matters, so if this value <= number of cores, assume same amount of time as 1 point. + # if cores == 10 and sweep.estimated_time(20), assume same amount of time as 2 points. + + # Print the results, jsonlines + print(sweep.results) + + # print the results, numpy + print(sweep.results.to_numpy()) + + ################### + + # an objective can also be an *executable* + objective_path = os.path.join(os.path.dirname(__file__), "forces.x") + + data = Data( + num_particles=random.sample(range(100, 1000, 10), 10), + num_steps = [10, 100, 1000], + rand_seed = 100, + kill_rate = [0.01, 0.1, 0.5] + ) + + # each of the samples will be given to the executable as arguments, in the exact order. Parallel runs. + + sweep = Sweep( + objective_executable=objective_path, + objective_output="forces.stat", # the output file name, otherwise pipe exe's stdout to file and assume the last line is the output + input_data=data, + ) + + sweep.run() + print(sweep.results) + + # Results are also separated into individual files in the sweep directory \ No newline at end of file diff --git a/ensemblesweep/examples/run_forces.py b/ensemblesweep/examples/run_forces.py new file mode 100644 index 0000000..be5f41e --- /dev/null +++ b/ensemblesweep/examples/run_forces.py @@ -0,0 +1,23 @@ +from ensemblesweep import Sweep, Data +import random +import os + +objective_path = os.path.join(os.path.dirname(__file__), "forces.x") + +data = Data( + num_particles=random.sample(range(100, 1000, 10), 10), + num_steps = [10, 100, 1000], + rand_seed = 100, + kill_rate = [0.01, 0.1, 0.5] +) + +sweep = Sweep( + objective_executable=objective_path, + objective_output="forces.stat", + input_data=data, +) + +if __name__ == "__main__": + + sweep.run() + print(sweep.results) \ No newline at end of file diff --git a/ensemblesweep/examples/six_hump_camel_sample.py b/ensemblesweep/examples/six_hump_camel_sample.py new file mode 100644 index 0000000..d51afe0 --- /dev/null +++ b/ensemblesweep/examples/six_hump_camel_sample.py @@ -0,0 +1,30 @@ +import numpy as np +from ensemblesweep import Sweep, Data + +def six_hump_camel_func(x0, x1): + """ + Definition of the six-hump camel + """ + term1 = (4 - 2.1 * x0**2 + (x0**4) / 3) * x0**2 + term2 = x0 * x1 + term3 = (-4 + 4 * x1**2) * x1**2 + f = term1 + term2 + term3 + return f, term1, term2, term3 + + +if __name__ == "__main__": + + data = Data( + x0 = np.linspace(-3, 3, 10), + x1 = np.linspace(-2, 2, 10) + ) + + sweep = Sweep( + objective_function=six_hump_camel_func, + objective_output=["f", "t1", "t2", "t3"], + input_data=data, + num_workers = 4 + ) + + sweep.run() + print(sweep.results) \ No newline at end of file diff --git a/ensemblesweep/pixi.lock b/ensemblesweep/pixi.lock new file mode 100644 index 0000000..aad8918 --- /dev/null +++ b/ensemblesweep/pixi.lock @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:0d76516c208e70391e576f98f8f03acda3ec7574fd5b419b7aa3b7c2c6f5ee15 +size 99506 diff --git a/ensemblesweep/pyproject.toml b/ensemblesweep/pyproject.toml new file mode 100644 index 0000000..a84e086 --- /dev/null +++ b/ensemblesweep/pyproject.toml @@ -0,0 +1,46 @@ +[project] +authors = [{ name = "jlnav", email = "jnavarro@anl.gov" }] +description = "A libEnsemble-based parameter sweep tool" +dependencies = ["libensemble>=1.5.0,<2", "numpy"] +name = "ensemblesweep" +requires-python = ">= 3.11" +dynamic = ["version"] + +[build-system] +build-backend = "setuptools.build_meta" +requires = ["setuptools", "wheel", "pip>=24.3.1,<27", "setuptools>=75.1.0,<83"] + +[tool.setuptools.dynamic] +version = { attr = "ensemblesweep.version.__version__" } + +[tool.setuptools] +packages = ["ensemblesweep"] +package-dir = {"" = "src"} + +[tool.pixi.workspace] +channels = ["conda-forge"] +platforms = ["osx-arm64", "linux-64"] + +[tool.pixi.environments] +default = [] +dev = ["dev"] + +[tool.pixi.pypi-dependencies] +ensemblesweep = { path = ".", editable = true } + +[tool.pixi.tasks] + +[tool.pixi.dependencies] +libensemble = ">=1.5.0,<2" + +[tool.pixi.feature.dev.dependencies] +pre-commit = ">=4.5.1,<5" +ruff = ">=0.15.2,<0.16" +pip = ">=26.0.1,<27" +llvm-openmp = ">=22.1.0,<23" +clang_osx-arm64 = ">=22.1.0,<23" +mpich = ">=5.0.0,<6" +git-lfs = ">=3.7.1,<4" + +[dependency-groups] +dev = ["wat>=0.7.0,<0.8"] diff --git a/ensemblesweep/setup.py b/ensemblesweep/setup.py new file mode 100644 index 0000000..6068493 --- /dev/null +++ b/ensemblesweep/setup.py @@ -0,0 +1,3 @@ +from setuptools import setup + +setup() diff --git a/ensemblesweep/src/ensemblesweep/__init__.py b/ensemblesweep/src/ensemblesweep/__init__.py new file mode 100644 index 0000000..bc0b7fb --- /dev/null +++ b/ensemblesweep/src/ensemblesweep/__init__.py @@ -0,0 +1,4 @@ +from .sweep import Sweep +from .data import Data + +__all__ = ["Sweep", "Data"] diff --git a/ensemblesweep/src/ensemblesweep/data.py b/ensemblesweep/src/ensemblesweep/data.py new file mode 100644 index 0000000..f1d32f6 --- /dev/null +++ b/ensemblesweep/src/ensemblesweep/data.py @@ -0,0 +1,69 @@ +import numpy as np +import itertools + + +class Data: + def __init__(self, **kwargs): + """ + Initializes the Data class. + Takes arbitrary keyword arguments and computes the Cartesian product + of all parameters that are list-like or array-like. + """ + self._keys = [] + self._values = [] + self._shapes = {} + + parsed_args = {} + for k, v in kwargs.items(): + self._keys.append(k) + # Handle numpy arrays, lists, tuples + if isinstance(v, (list, tuple)) or ( + isinstance(v, np.ndarray) and v.ndim > 0 + ): + parsed_args[k] = list(v) + else: + # Wrap scalars in a list so itertools.product works + parsed_args[k] = [v] + + # Compute cartesian product + product = list(itertools.product(*[parsed_args[k] for k in self._keys])) + + self.total = len(product) + self.combinations = product + + # Prepare the libEnsemble dtype specification for inputs + self.dtype_spec = [] + for k in self._keys: + sample_val = parsed_args[k][0] + if isinstance(sample_val, np.ndarray): + self.dtype_spec.append((k, sample_val.dtype, sample_val.shape)) + elif isinstance(sample_val, int): + self.dtype_spec.append((k, int)) + elif isinstance(sample_val, float): + self.dtype_spec.append((k, float)) + elif isinstance(sample_val, str): + self.dtype_spec.append( + (k, "U" + str(len(sample_val) + int(len(sample_val) / 10))) + ) # fallback string + else: + self.dtype_spec.append((k, object)) # Fallback + + def to_h0(self): + """ + Converts the computed parameter space to a libEnsemble H0 array. + """ + # Add basic libEnsemble fields + full_dtype = self.dtype_spec + [ + ("sim_id", int), + ("sim_started", bool), + ("sim_ended", bool), + ] + H0 = np.zeros(self.total, dtype=full_dtype) + + for i, combo in enumerate(self.combinations): + for j, key in enumerate(self._keys): + H0[key][i] = combo[j] + H0["sim_id"][i] = i + H0["sim_started"][i] = False + + return H0 diff --git a/ensemblesweep/src/ensemblesweep/sim_funcs.py b/ensemblesweep/src/ensemblesweep/sim_funcs.py new file mode 100644 index 0000000..e2fd373 --- /dev/null +++ b/ensemblesweep/src/ensemblesweep/sim_funcs.py @@ -0,0 +1,124 @@ +import time +import numpy as np +import os +from libensemble.message_numbers import WORKER_DONE, TASK_FAILED +import logging +import traceback + +logger = logging.getLogger(__name__) +_EXCEPTION_COUNTS = {} + + +def generic_function_simf(H, persis_info, sim_specs, *args): + """ + sim_f for executing generic Python functions. + """ + start_time = time.time() + + # Get user function and expected parameters + func = sim_specs["user"]["objective_function"] + input_keys = sim_specs["user"]["input_keys"] + + # Extract arguments from H, passing only the first row's data + args = [H[k][0] for k in input_keys] + + output = np.zeros(1, dtype=sim_specs["out"]) + calc_status = WORKER_DONE + result = np.nan + try: + # Evaluate function + result = func(*args) + except Exception as e: + tb = traceback.format_exc() + if tb not in _EXCEPTION_COUNTS: + _EXCEPTION_COUNTS[tb] = 1 + logger.warning(f"Error evaluating objective_function: {tb}") + + if "error_msg" in output.dtype.names: + output["error_msg"] = str(e)[:100] + calc_status = TASK_FAILED + + eval_time = time.time() - start_time + + # Format output based on the result type + out_fields = [ + n for n in output.dtype.names if n != "eval_time" and n != "error_msg" + ] + + if isinstance(result, dict): + matched = False + for k, v in result.items(): + if k in output.dtype.names: + output[k] = v + matched = True + if not matched: + logger.warning( + f"Objective function returned dictionary with keys {list(result.keys())}, but none match the expected output fields {out_fields}." + ) + elif isinstance(result, (list, tuple)): + # If it's a single-element list/tuple, treat it as a scalar or map to first field + if len(result) == 1: + if out_fields: + output[out_fields[0]] = result[0] + else: + # Map elements to output fields in order + for i, v in enumerate(result): + if i < len(out_fields): + output[out_fields[i]] = v + else: + # Scalar result + if out_fields: + output[out_fields[0]] = result + + output["eval_time"] = eval_time + return output, persis_info, calc_status + + +def generic_executable_simf(H, persis_info, sim_specs, libE_info): + """ + sim_f for executing binaries using MPIExecutor. + """ + output = np.zeros(1, dtype=sim_specs["out"]) + start_time = time.time() + calc_status = WORKER_DONE + + output_file = sim_specs["user"]["objective_output"] + input_keys = sim_specs["user"]["input_keys"] + + # Build arguments string + args_list = [str(H[k][0]) for k in input_keys] + args = " ".join(args_list) + + exctr = libE_info["executor"] + + # Execute without redirecting stdout unless we don't have an output file + if output_file: + task = exctr.submit(app_name="executable", app_args=args) + else: + output_file = "sim.out" # pipe exe's stdout to file and assume the last line is the output + task = exctr.submit(app_name="executable", app_args=args, stdout=output_file) + + task.wait() + + final_data = np.nan + if task.state == "FINISHED": + filepath = os.path.join(task.workdir, output_file) + try: + # We assume output can be processed by np.loadtxt + data = np.loadtxt(filepath) + final_data = data[-1] if data.ndim > 0 else data.item() + except Exception as e: + logger.warning(f"Error reading output file {filepath}: {e}") + if "error_msg" in output.dtype.names: + output["error_msg"] = str(e)[:100] + calc_status = TASK_FAILED + else: + calc_status = TASK_FAILED + + eval_time = time.time() - start_time + + if "output" in output.dtype.names: + output["output"] = final_data + output["eval_time"] = eval_time + + return output, persis_info, calc_status diff --git a/ensemblesweep/src/ensemblesweep/sweep.py b/ensemblesweep/src/ensemblesweep/sweep.py new file mode 100644 index 0000000..c135877 --- /dev/null +++ b/ensemblesweep/src/ensemblesweep/sweep.py @@ -0,0 +1,225 @@ +import math +import os +import time +import numpy as np +import logging +import traceback + +from libensemble import Ensemble +from libensemble.comms.logs import LogConfig +from libensemble.specs import SimSpecs, AllocSpecs, ExitCriteria +from libensemble.alloc_funcs.give_pregenerated_work import ( + give_pregenerated_sim_work as alloc_f, +) + +from .sim_funcs import generic_function_simf, generic_executable_simf + +logs = LogConfig.config +logs.stat_filename = "stats.txt" +logger = logging.getLogger(__name__) + + +class ResultWrapper: + def __init__(self, sweep): + self.sweep = sweep + + def __len__(self): + return int(np.sum(self.sweep._H_total["sim_ended"])) + + def __getitem__(self, i): + results = self.sweep._H_total[self.sweep._H_total["sim_ended"]] + if len(results) == 0: + return [] + + sliced = results[i] + + # format out fields, exclude internal libEnsemble properties + ignore_fields = [ + "sim_id", + "sim_started", + "sim_started_time", + "sim_ended", + "sim_ended_time", + "sim_worker", + "sim_time", + "given", + "given_time", + "cancel_requested", + "kill_sent", + "gen_informed", + "gen_informed_time", + "gen_started_time", + "gen_ended_time", + "gen_worker", + ] + + if isinstance(sliced, np.void): + out = {} + for name in sliced.dtype.names: + if name not in ignore_fields: + out[name] = sliced[name] + return out + else: + out_list = [] + for item in sliced: + out = {} + for name in item.dtype.names: + if name not in ignore_fields: + out[name] = item[name] + out_list.append(out) + return out_list + + def to_numpy(self): + return self.sweep._H_total[self.sweep._H_total["sim_ended"]] + + def __str__(self): + # We can format it nicely + results = self.sweep._H_total[self.sweep._H_total["sim_ended"]] + if len(results) == 0: + return "[]" + return str(self[:]) + + def __repr__(self): + return repr(self[:]) + + +class Sweep: + def __init__( + self, + objective_function=None, + input_data=None, + objective_executable=None, + objective_output=None, + num_workers=None, + ): + self.objective_function = objective_function + self.objective_executable = objective_executable + self.objective_output = objective_output + self.input_data = input_data + self.num_workers = num_workers + + if self.objective_function and self.objective_executable: + raise ValueError( + "Provide either objective_function or objective_executable, not both." + ) + + self._H_total = input_data.to_h0() + self.evaluated = 0 + self.results = ResultWrapper(self) + + def run(self, n=None): + total_points = len(self._H_total) + if self.evaluated >= total_points: + logger.manager_warning("All points already evaluated.") + return + + to_evaluate = total_points - self.evaluated + if n is not None: + to_evaluate = min(n, to_evaluate) + + target_sim_max = self.evaluated + to_evaluate + + cores = max(1, os.cpu_count() - 1) + if self.num_workers is not None and self.num_workers >= 1: + cores = self.num_workers + + libE_specs = { + "comms": "local", + "nworkers": cores, + "sim_dirs_make": True, + "ensemble_dir_path": f"sweep_{int(time.time())}", + "reuse_output_dir": True, + "use_workflow_dir": True, + "save_H_and_persis_on_abort": False, + "save_every_k_sims": 1, + } + ensemble = Ensemble(parse_args=False, libE_specs=libE_specs) + ensemble.H0 = self._H_total + + if self.objective_function: + out_fields = self.objective_output if self.objective_output else "output" + if isinstance(out_fields, str): + out_fields = [out_fields] + + out_spec = [(f, float) for f in out_fields] + [ + ("eval_time", float), + ("error_msg", "U100"), + ] + + sim_specs = SimSpecs( + sim_f=generic_function_simf, + inputs=self.input_data._keys, + out=out_spec, + user={ + "objective_function": self.objective_function, + "input_keys": self.input_data._keys, + }, + ) + else: + out_spec = [("output", float), ("eval_time", float), ("error_msg", "U100")] + sim_specs = SimSpecs( + sim_f=generic_executable_simf, + inputs=self.input_data._keys, + out=out_spec, + user={ + "objective_executable": self.objective_executable, + "objective_output": self.objective_output, + "input_keys": self.input_data._keys, + }, + ) + + ensemble.sim_specs = sim_specs + ensemble.alloc_specs = AllocSpecs(alloc_f=alloc_f) + ensemble.exit_criteria = ExitCriteria(sim_max=target_sim_max) + + if self.objective_executable: + from libensemble.executors.mpi_executor import MPIExecutor + + exctr = MPIExecutor() + # Register using absolute path effectively + exctr.register_app( + full_path=self.objective_executable, app_name="executable" + ) + + try: + ensemble.run() + except Exception as e: + logger.error(f"Error running ensemble: {traceback.format_exc()}") + raise e + + if ensemble.is_manager: + self._H_total = ensemble.H + self.evaluated = np.sum(self._H_total["sim_ended"]) + + # Aggregate and log exception summary from the history array H + if "error_msg" in self._H_total.dtype.names: + unique_errors, counts = np.unique( + self._H_total["error_msg"], return_counts=True + ) + if any(err != "" for err in unique_errors): + logger.warning("\nException Summary:") + for msg, count in zip(unique_errors, counts): + if msg != "": + logger.warning(f' -> "{msg}": {count} times total.') + logger.warning("\n") + + def estimated_time(self, n=None): + if self.evaluated == 0: + logger.manager_warning( + "Cannot estimate time without running at least one evaluation." + ) + return -1.0 + + results = self._H_total[self._H_total["sim_ended"]] + if "eval_time" not in results.dtype.names: + return -1.0 + + avg_time = np.mean(results["eval_time"]) + + if n is None: + n = len(self._H_total) - self.evaluated + + cores = max(1, os.cpu_count() - 1) + + batches = math.ceil(n / cores) + return batches * avg_time diff --git a/ensemblesweep/src/ensemblesweep/version.py b/ensemblesweep/src/ensemblesweep/version.py new file mode 100644 index 0000000..f102a9c --- /dev/null +++ b/ensemblesweep/src/ensemblesweep/version.py @@ -0,0 +1 @@ +__version__ = "0.0.1" diff --git a/pixi.lock b/pixi.lock index 278211e..01c0178 100644 --- a/pixi.lock +++ b/pixi.lock @@ -2316,7 +2316,7 @@ packages: - pypi: ./ name: libe-community-examples version: 0.1.0 - sha256: 32bda8c2e8f5a1e2ee6c63952d393a4ad4da6ca0e302676c20320809de8af17f + sha256: c54926956e7d408646cae96538c7f23ae34db86b0b67834c2369682f1b848316 requires_dist: - ray>=2.44.1,<3 - dh-scikit-optimize @ git+https://github.com/ytopt-team/scikit-optimize.git diff --git a/pyproject.toml b/pyproject.toml index a099b45..5aa9d18 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,7 @@ requires = ["setuptools", "wheel", "pip"] [tool.setuptools] py-modules = [] -[tool.pixi.project] +[tool.pixi.workspace] channels = ["conda-forge"] platforms = ["osx-arm64", "linux-64"]