diff --git a/applications/grainGrowth_dream3d/20_grain_2D_RL.vtk b/applications/grainGrowth_dream3d/20_grain_2D_RL.vtk new file mode 100644 index 000000000..c1416c72b --- /dev/null +++ b/applications/grainGrowth_dream3d/20_grain_2D_RL.vtk @@ -0,0 +1,492 @@ +# vtk DataFile Version 4.2 +vtk output +ASCII +DATASET RECTILINEAR_GRID +FIELD FieldData 3 +MeshName 1 1 string +mesh + +CYCLE 1 1 int +2 +TIME 1 1 double +2 +DIMENSIONS 65 65 1 +X_COORDINATES 65 double +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 +Y_COORDINATES 65 double +0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 +Z_COORDINATES 1 double +0 +POINT_DATA 4225 +SCALARS FeatureIds double +LOOKUP_TABLE default +3 3 3 3 3 3 3 3 3 +3 3 3 3 17 17 17 17 17 +17 17 17 17 17 17 17 17 19 +19 19 19 19 19 19 19 19 19 +19 19 19 4 4 4 4 4 4 +4 4 4 4 4 2 2 2 2 +2 2 2 2 2 2 2 2 2 +2 2 3 3 3 3 3 3 3 +3 3 3 3 3 3 17 17 17 +17 17 17 17 17 17 17 17 17 +17 19 19 19 19 19 19 19 19 +19 19 19 19 19 4 4 4 4 +4 4 4 4 4 4 4 4 2 +2 2 2 2 2 2 2 2 2 +2 2 2 2 3 3 3 3 3 +3 3 3 3 3 3 3 3 17 +17 17 17 17 17 17 17 17 17 +17 17 17 19 19 19 19 19 19 +19 19 19 19 19 19 19 4 4 +4 4 4 4 4 4 4 4 4 +4 4 2 2 2 2 2 2 2 +2 2 2 2 2 2 3 3 3 +3 3 3 3 3 3 3 3 3 +3 17 17 17 17 17 17 17 17 +17 17 17 17 17 19 19 19 19 +19 19 19 19 19 19 19 19 19 +4 4 4 4 4 4 4 4 4 +4 4 4 4 4 2 2 2 2 +2 2 2 2 2 2 2 2 3 +3 3 3 3 3 3 3 3 3 +3 3 17 17 17 17 17 17 17 +17 17 17 17 17 17 17 19 19 +19 19 19 19 19 19 19 19 19 +19 19 4 4 4 4 4 4 4 +4 4 4 4 4 4 4 2 2 +2 2 2 2 2 2 2 2 2 +2 3 3 3 3 3 3 3 3 +3 3 3 17 17 17 17 17 17 +17 17 17 17 17 17 17 17 17 +19 19 19 19 19 19 19 19 19 +19 19 19 19 19 4 4 4 4 +4 4 4 4 4 4 4 4 4 +4 2 2 2 2 2 2 2 2 +2 2 2 13 13 13 13 3 3 +3 3 3 3 17 17 17 17 17 +17 17 17 17 17 17 17 17 17 +17 17 19 19 19 19 19 19 19 +19 19 19 19 19 19 19 4 4 +4 4 4 4 4 4 4 4 4 +4 4 4 2 2 2 16 16 16 +16 16 16 16 16 13 13 13 13 +13 13 3 3 3 3 17 17 17 +17 17 17 17 17 17 17 17 17 +17 17 17 17 19 19 19 19 19 +19 19 19 19 19 19 19 19 19 +19 4 4 4 4 4 4 4 4 +4 4 4 4 4 2 16 16 16 +16 16 16 16 16 16 16 13 13 +13 13 13 13 13 13 13 13 17 +17 17 17 17 17 17 17 17 17 +17 17 17 17 17 17 19 19 19 +19 19 19 19 19 19 19 19 19 +19 19 19 12 12 12 12 12 12 +12 4 4 4 4 4 4 16 16 +16 16 16 16 16 16 16 16 16 +13 13 13 13 13 13 13 13 13 +13 17 17 17 17 17 17 17 17 +17 17 17 17 9 9 9 9 19 +19 19 19 19 19 19 19 19 19 +19 19 19 19 19 12 12 12 12 +12 12 12 12 12 12 4 4 16 +16 16 16 16 16 16 16 16 16 +16 16 13 13 13 13 13 13 13 +13 13 13 8 17 17 17 17 17 +17 17 17 17 9 9 9 9 9 +9 19 19 19 19 19 19 19 19 +19 19 19 19 19 19 19 12 12 +12 12 12 12 12 12 12 12 12 +12 16 16 16 16 16 16 16 16 +16 16 16 16 13 13 13 13 13 +13 13 13 13 13 8 8 17 17 +17 17 17 17 17 9 9 9 9 +9 9 9 19 19 19 19 19 19 +19 19 19 19 19 19 19 19 19 +12 12 12 12 12 12 12 12 12 +12 12 12 16 16 16 16 16 16 +16 16 16 16 16 16 13 13 13 +13 13 13 13 13 13 8 8 8 +8 17 17 17 17 17 9 9 9 +9 9 9 9 9 9 19 19 19 +19 19 19 19 19 19 19 19 19 +19 19 12 12 12 12 12 12 12 +12 12 12 12 12 16 16 16 16 +16 16 16 16 16 16 16 16 13 +13 13 13 13 13 13 13 13 8 +8 8 8 8 17 17 17 9 9 +9 9 9 9 9 9 9 9 19 +19 19 19 19 19 19 19 19 19 +19 19 19 19 12 12 12 12 12 +12 12 12 12 12 12 12 16 16 +16 16 16 16 16 16 16 16 16 +16 13 13 13 13 13 13 13 13 +8 8 8 8 8 8 8 8 9 +9 9 9 9 9 9 9 9 9 +9 19 19 19 19 19 19 19 19 +19 19 19 19 19 12 12 12 12 +12 12 12 12 12 12 12 12 12 +12 16 16 16 16 16 16 16 16 +16 16 16 13 13 13 13 13 13 +13 8 8 8 8 8 8 8 8 +8 9 9 9 9 9 9 9 9 +9 9 9 9 19 19 19 19 19 +19 19 19 19 19 19 19 12 12 +12 12 12 12 12 12 12 12 12 +12 12 12 16 16 16 16 16 16 +16 16 16 16 16 20 20 20 13 +13 13 13 8 8 8 8 8 8 +8 8 8 8 9 9 9 9 9 +9 9 9 9 9 9 19 19 19 +19 19 19 19 19 19 19 19 19 +12 12 12 12 12 12 12 12 12 +12 12 12 12 12 16 16 16 16 +16 16 16 16 16 16 16 20 20 +20 20 20 13 8 8 8 8 8 +8 8 8 8 8 8 9 9 9 +9 9 9 9 9 9 9 9 19 +19 19 19 19 19 19 19 19 19 +19 19 12 12 12 12 12 12 12 +12 12 12 12 12 12 12 16 16 +16 16 16 16 16 16 16 16 16 +20 20 20 20 20 20 8 8 8 +8 8 8 8 8 8 8 8 9 +9 9 9 9 9 9 9 9 9 +9 19 19 19 19 19 19 19 19 +19 19 19 5 5 12 12 12 12 +12 12 12 12 12 12 12 12 12 +16 16 16 16 16 16 16 16 16 +16 16 20 20 20 20 20 20 20 +8 8 8 8 8 8 8 8 8 +8 9 9 9 9 9 9 9 9 +9 9 9 19 19 19 19 19 19 +19 19 19 19 5 5 5 5 12 +12 12 12 12 12 12 12 12 12 +12 12 16 16 16 16 16 16 16 +16 16 16 16 20 20 20 20 20 +20 20 20 8 8 8 8 8 8 +8 8 8 9 9 9 9 9 9 +9 9 9 9 9 19 19 19 19 +19 19 19 19 19 5 5 5 5 +5 5 12 12 12 12 12 12 12 +12 12 12 12 16 16 16 16 16 +16 16 16 16 16 16 20 20 20 +20 20 20 20 20 20 8 8 8 +8 8 8 8 8 9 9 9 9 +9 9 9 9 9 9 9 19 19 +19 19 19 19 19 19 5 5 5 +5 5 5 5 5 12 12 12 12 +12 12 12 12 12 12 6 6 6 +16 16 16 16 16 16 16 16 20 +20 20 20 20 20 20 20 20 20 +8 8 8 8 8 8 8 9 9 +9 9 9 9 9 9 9 9 9 +19 19 19 19 19 19 19 5 5 +5 5 5 5 5 5 5 5 12 +12 12 12 12 12 12 12 6 6 +6 6 6 6 6 6 6 6 6 +6 20 20 20 20 20 20 20 20 +20 20 8 8 8 8 8 8 8 +9 9 9 9 9 9 9 9 9 +9 9 19 19 19 19 19 5 5 +5 5 5 5 5 5 5 5 5 +5 5 12 12 12 12 12 12 6 +6 6 6 6 6 6 6 6 6 +6 6 6 20 20 20 20 20 20 +20 20 20 20 8 8 8 8 8 +8 8 9 9 9 9 9 9 9 +9 9 9 9 7 7 5 5 5 +5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 12 12 12 +6 6 6 6 6 6 6 6 6 +6 6 6 6 6 20 20 20 20 +20 20 20 20 20 20 8 8 8 +8 8 8 8 9 9 9 9 9 +9 9 9 9 9 7 7 7 5 +5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 +6 6 6 6 6 6 6 6 6 +6 6 6 6 6 6 6 20 20 +20 20 20 20 20 20 20 20 8 +8 8 8 8 8 8 9 9 9 +9 9 9 9 9 9 7 7 7 +7 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 +5 5 6 6 6 6 6 6 6 +6 6 6 6 6 6 6 6 6 +15 15 15 15 15 15 15 15 15 +15 15 15 8 8 8 8 8 9 +9 9 9 9 9 9 9 7 7 +7 7 7 7 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 +5 5 5 5 6 6 6 6 6 +6 6 6 6 6 6 6 6 6 +6 6 15 15 15 15 15 15 15 +15 15 15 15 15 15 15 15 15 +15 15 9 9 9 9 9 9 7 +7 7 7 7 7 7 7 5 5 +5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 6 6 6 +6 6 6 6 6 6 6 6 6 +6 6 6 6 15 15 15 15 15 +15 15 15 15 15 15 15 15 15 +15 15 15 15 15 9 9 9 7 +7 7 7 7 7 7 7 7 7 +5 5 5 5 5 5 5 5 5 +5 5 5 5 5 5 5 6 6 +6 6 6 6 6 6 6 6 6 +6 6 6 6 6 6 15 15 15 +15 15 15 15 15 15 15 15 15 +15 15 15 15 15 15 15 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 5 5 5 5 5 5 +5 5 5 5 5 5 5 5 5 +6 6 6 6 6 6 6 6 6 +6 6 6 6 6 6 6 6 15 +15 15 15 15 15 15 15 15 15 +15 15 15 15 15 15 15 15 15 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 5 5 5 +5 5 5 5 5 5 5 5 5 +5 5 6 6 6 6 6 6 6 +6 6 6 6 6 6 6 6 6 +6 15 15 15 15 15 15 15 15 +15 15 15 15 15 15 15 15 15 +15 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +5 5 5 5 5 5 5 5 5 +5 5 5 5 6 6 6 6 6 +6 6 6 6 6 6 6 6 6 +6 6 6 15 15 15 15 15 15 +15 15 15 15 15 15 15 15 15 +15 15 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 5 5 5 5 5 5 +5 5 5 5 5 5 6 6 6 +6 6 6 6 6 6 6 6 6 +6 6 6 6 6 15 15 15 15 +15 15 15 15 15 15 15 15 15 +15 15 15 15 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 5 5 5 +5 5 5 5 5 5 5 5 6 +6 6 6 6 6 6 6 6 6 +6 6 6 6 6 6 6 15 15 +15 15 15 15 15 15 15 15 15 +15 15 15 15 15 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +5 5 5 5 5 5 5 5 5 +11 11 11 11 6 6 6 6 6 +6 6 6 6 6 6 6 6 6 +15 15 15 15 15 15 15 15 15 +15 15 15 15 15 15 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 5 5 5 5 5 5 +5 11 11 11 11 11 11 11 6 +6 6 6 6 6 6 6 6 6 +6 6 15 15 15 15 15 15 15 +15 15 15 15 15 15 15 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 5 5 5 5 +5 5 11 11 11 11 11 11 11 +11 11 6 6 6 6 6 6 6 +10 10 10 10 15 15 15 15 15 +15 15 15 15 15 15 15 15 15 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 5 5 +5 5 5 11 11 11 11 11 11 +11 11 11 11 11 6 6 6 6 +10 10 10 10 10 10 15 15 15 +15 15 15 15 15 15 15 15 15 +15 15 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +5 5 5 5 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +6 10 10 10 10 10 10 10 15 +15 15 15 15 15 15 15 15 15 +15 15 15 15 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 5 5 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 10 10 10 10 10 10 10 +10 15 15 15 15 15 15 15 15 +15 15 15 18 18 18 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 10 10 10 10 10 +10 10 10 15 15 15 15 15 15 +15 15 15 18 18 18 18 18 18 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 10 10 10 +10 10 10 10 10 15 15 15 15 +15 15 15 15 18 18 18 18 18 +18 18 18 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 10 +10 10 10 10 10 10 10 15 15 +15 15 15 15 15 18 18 18 18 +18 18 18 18 18 18 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 10 10 10 10 10 10 10 10 +15 15 15 15 15 15 18 18 18 +18 18 18 18 18 18 18 18 18 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 10 10 10 10 10 10 +10 10 15 15 15 15 15 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 11 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 10 10 10 10 10 +10 10 10 10 15 15 15 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 7 7 7 +7 7 7 7 7 7 7 7 7 +7 7 7 7 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 10 10 10 +10 10 10 10 10 10 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +7 7 7 7 7 7 7 7 7 +7 7 7 7 7 7 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 10 +10 10 10 10 10 10 10 10 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 7 7 7 7 7 7 +7 7 7 7 7 7 7 7 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +10 10 10 10 10 10 10 10 10 +10 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 7 7 7 +7 7 7 7 7 7 7 7 7 +7 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 10 10 10 10 10 10 10 +10 10 10 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +7 7 7 7 7 7 7 7 7 +7 7 7 11 11 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 10 10 10 10 10 +10 10 10 10 10 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 7 7 7 7 7 7 +7 7 7 7 7 11 11 11 11 +11 11 11 11 11 11 11 11 11 +11 11 11 11 11 11 10 10 10 +10 10 10 10 10 10 10 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 7 7 7 +7 7 7 7 7 7 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 10 +10 10 10 10 10 10 10 10 10 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +7 7 7 7 7 7 7 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 10 10 10 10 10 10 10 10 +10 10 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 7 7 7 7 7 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 1 1 1 1 1 1 +1 1 1 1 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 7 7 7 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 1 1 1 1 +1 1 1 1 1 1 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 1 1 +1 1 1 1 1 1 1 1 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +1 1 1 1 1 1 1 1 1 +1 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 1 1 1 1 1 1 1 +1 1 1 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 1 1 1 1 1 +1 1 1 1 1 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 1 1 1 +1 1 1 1 1 1 1 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 1 +1 1 1 1 1 1 1 1 1 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 1 1 1 1 1 1 1 1 +1 1 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 18 18 18 18 18 +18 18 18 18 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 14 14 14 14 14 14 +14 14 14 1 1 1 1 1 1 +1 1 1 1 diff --git a/applications/grainGrowth_dream3d/parameters.prm b/applications/grainGrowth_dream3d/parameters.prm index d5ba8342c..0a7647f4b 100644 --- a/applications/grainGrowth_dream3d/parameters.prm +++ b/applications/grainGrowth_dream3d/parameters.prm @@ -10,7 +10,7 @@ set Number of dimensions = 2 # Each axes spans from zero to the specified length set Domain size X = 64 set Domain size Y = 64 -set Domain size Z = 100 +set Domain size Z = 1 # ================================================================================= # Set the element parameters diff --git a/applications/grainGrowth_dream3d/tex_files/rectilinear_grid_instructions.pdf b/applications/grainGrowth_dream3d/tex_files/rectilinear_grid_instructions.pdf new file mode 100644 index 000000000..8aa220d6e Binary files /dev/null and b/applications/grainGrowth_dream3d/tex_files/rectilinear_grid_instructions.pdf differ diff --git a/include/IntegrationTools/pfield/Body.hh b/include/IntegrationTools/pfield/Body.hh index 2fb4ea0bd..9d28d0201 100644 --- a/include/IntegrationTools/pfield/Body.hh +++ b/include/IntegrationTools/pfield/Body.hh @@ -1,4 +1,3 @@ - #ifndef Body_HH #define Body_HH @@ -39,7 +38,7 @@ namespace PRISMS void read_vtk(const std::string &vtkfile) { - std::cout << "Begin reading vtk file" << std::endl; + std::cout << "Begin reading unstructured vtk file" << std::endl; // read in vtk file here std::ifstream infile_mesh(vtkfile.c_str()); @@ -53,7 +52,7 @@ namespace PRISMS std::istringstream ss; std::string str, name, type, line; int numcomp; - unsigned long int Npoints; + unsigned long int Npoints, u, p; while (!infile.eof()) { @@ -69,7 +68,8 @@ namespace PRISMS ss >> str >> Npoints; } } - else if (line[0] == 'S') + + if (line[0] == 'S') { if (line.size() > 6 && line.substr(0, 7) == "SCALARS") { @@ -82,10 +82,11 @@ namespace PRISMS // read data std::cout << "begin reading data" << std::endl; - std::vector data(Npoints); + + std::vector gid(Npoints); for (unsigned int i = 0; i < Npoints; i++) { - infile >> data[i]; + infile >> gid[i]; // std::cout << data[i] << std::endl; } std::cout << " done" << std::endl; @@ -94,14 +95,14 @@ namespace PRISMS std::vector var_name(DIM); std::vector var_description(DIM); - if (DIM >= 2) + if (DIM == 2) { var_name[0] = "x"; var_description[0] = "x coordinate"; var_name[1] = "y"; var_description[1] = "y coordinate"; } - if (DIM >= 3) + if (DIM > 2) { var_name[2] = "z"; var_description[2] = "z coordinate"; @@ -112,49 +113,191 @@ namespace PRISMS var_name, var_description, mesh, - data, + gid, 0.0)); std::cout << " done" << std::endl; + + gid.clear(); + // + } + } + } + + infile.close(); + } + + void + read_RL_vtk(const std::string &vtkfile) + { + std::cout << "Begin reading vtk file" << std::endl; + + // read in vtk file here + std::ifstream infile_mesh(vtkfile.c_str()); + + // read mesh info + mesh.read_RL_vtk(infile_mesh); + + std::ifstream infile(vtkfile.c_str()); + + // read point data + std::istringstream ss; + std::string str, name, type, line; + int numcomp; + unsigned long int N_points, Npoints_x, Npoints_y, Npoints_z, Npoints, u, p; + + while (!infile.eof()) + { + std::getline(infile, line); + + if (line[0] == 'X') + { + if (line.size() > 12 && line.substr(0, 13) == "X_COORDINATES") + { + // read header line + // std::cout << line << "\n"; + ss.clear(); + ss.str(line); + ss >> str >> Npoints_x >> type; + + std::cout << "Read X_COORDINATES: " << Npoints_x << std::endl; + + // std::cout << " reserve OK" << std::endl; } } - // Alternative field descriptor used by ParaView (holds the same information as - // the "SCALAR" line above) - else if (line[0] == 'F') + if (line[0] == 'Y') { - if (line.size() > 14 && line.substr(0, 15) == "FIELD FieldData") + if (line.size() > 12 && line.substr(0, 13) == "Y_COORDINATES") { + // read header line + // std::cout << line << "\n"; ss.clear(); ss.str(line); - ss >> str >> numcomp; + ss >> str >> Npoints_y >> type; - // read LOOKUP_TABLE line - std::getline(infile, line); + // read points + + std::cout << "Read Y_COORDINATES: " << Npoints_y << std::endl; + // std::cout << " reserve OK" << std::endl; + } + } + if (line[0] == 'Z') + { + if (line.size() > 12 && line.substr(0, 13) == "Z_COORDINATES") + { + // read header line + // std::cout << line << "\n"; + ss.clear(); + ss.str(line); + ss >> str >> Npoints_z >> type; + + // read points + + std::cout << "Read Z_COORDINATES: " << Npoints_z << std::endl; + + // std::cout << " reserve OK" << std::endl; + } + } + + if (line[0] == 'S') + { + if (line.size() > 6 && line.substr(0, 7) == "SCALARS") + { ss.clear(); ss.str(line); - ss >> name >> numcomp >> Npoints >> type; + ss >> str >> name >> type >> numcomp; + + // read LOOKUP_TABLE line + std::getline(infile, line); // read data std::cout << "begin reading data" << std::endl; - std::vector data(Npoints); - for (unsigned int i = 0; i < Npoints; i++) + + N_points = (Npoints_x) * (Npoints_y) * (Npoints_z); + + if (DIM > 2) + { + Npoints = 8 * (Npoints_x - 1) * (Npoints_y - 1) * (Npoints_z - 1); + } + if (DIM == 2) + { + Npoints = 4 * (Npoints_x - 1) * (Npoints_y - 1); + } + + std::vector data( + N_points); // NB: data and gid are of different size + std::vector gid(Npoints); // gid is the grainID for each node + // unsigned int gid[Npoints]; + + for (unsigned int i = 0; i < N_points; i++) { infile >> data[i]; + // std::cout << data[i] << std::endl; } - std::cout << " done" << std::endl; + + std::cout << "beginning grain_id stencil" << std::endl; + + u = 0; + if (DIM > 2) + { + for (unsigned int i = 0; i < (Npoints_z - 1); i++) + { + for (unsigned int j = 0; j < (Npoints_y - 1); j++) + { + for (unsigned int k = 0; k < (Npoints_x - 1); k++) + { + p = k + j * Npoints_x + i * Npoints_x * Npoints_y; + + gid[u] = data[p]; + gid[u + 1] = data[p + 1]; + gid[u + 2] = data[p + Npoints_x]; + gid[u + 3] = data[p + Npoints_x + 1]; + gid[u + 4] = data[p + Npoints_x * Npoints_y]; + gid[u + 5] = data[p + Npoints_x * Npoints_y + 1]; + gid[u + 6] = + data[p + Npoints_x + Npoints_x * Npoints_y]; + gid[u + 7] = + data[p + Npoints_x + Npoints_x * Npoints_y + 1]; + + u += 8; + } + } + } + } + + if (DIM == 2) + { + for (unsigned int j = 0; j < (Npoints_y - 1); j++) + { + for (unsigned int k = 0; k < (Npoints_x - 1); k++) + { + p = k + j * Npoints_x; + + gid[u] = data[p]; + gid[u + 1] = data[p + 1]; + gid[u + 2] = data[p + Npoints_x]; + gid[u + 3] = data[p + Npoints_x + 1]; + + u += 4; + } + } + } + + data.clear(); + // MPI_Barrier(MPI_COMM_WORLD); // construct field std::vector var_name(DIM); std::vector var_description(DIM); - if (DIM >= 2) + if (DIM == 2) { var_name[0] = "x"; var_description[0] = "x coordinate"; var_name[1] = "y"; var_description[1] = "y coordinate"; } - if (DIM >= 3) + if (DIM > 2) { var_name[2] = "z"; var_description[2] = "z coordinate"; @@ -165,9 +308,12 @@ namespace PRISMS var_name, var_description, mesh, - data, + gid, 0.0)); std::cout << " done" << std::endl; + + gid.clear(); + // } } } diff --git a/include/IntegrationTools/pfield/Coordinate.hh b/include/IntegrationTools/pfield/Coordinate.hh index 47ea49402..5a5203140 100644 --- a/include/IntegrationTools/pfield/Coordinate.hh +++ b/include/IntegrationTools/pfield/Coordinate.hh @@ -13,7 +13,7 @@ namespace PRISMS template class Coordinate { - double _coord[DIM]; + float _coord[DIM]; public: int @@ -22,13 +22,13 @@ namespace PRISMS return DIM; } - double & + float & operator[](int i) { return _coord[i]; } - const double & + const float & operator[](int i) const { return _coord[i]; diff --git a/include/IntegrationTools/pfield/Mesh.hh b/include/IntegrationTools/pfield/Mesh.hh index a66d62d83..0ef719c84 100644 --- a/include/IntegrationTools/pfield/Mesh.hh +++ b/include/IntegrationTools/pfield/Mesh.hh @@ -54,12 +54,12 @@ namespace PRISMS const std::string &name, unsigned long int cell, PFuncBase>, double> *bfunc_ptr, - const std::vector &cell_node, + const std::vector &cell_node, const std::vector> &node) { if (name == "Quad") { - Interpolator *interp_ptr = nullptr; + Interpolator *interp_ptr; // std::cout << "cell nodes: " << cell_node[0] << " " << cell_node[2] << // std::endl; @@ -95,12 +95,12 @@ namespace PRISMS const std::string &name, unsigned long int cell, PFuncBase>, double> *bfunc_ptr, - const std::vector &cell_node, + const std::vector &cell_node, const std::vector> &node) { if (name == "Hexahedron") { - Interpolator *interp_ptr = nullptr; + Interpolator *interp_ptr; PRISMS::Coordinate<3> dim; dim[0] = node[cell_node[6]][0] - node[cell_node[0]][0]; @@ -177,24 +177,26 @@ namespace PRISMS } }; - // reads vtk file through 'CELL_TYPES' and then returns void read_vtk(std::ifstream &infile) { - bool mesh_as_points = true; - std::vector x_coord, y_coord, z_coord; + std::cout << "Read unstructured mesh" << std::endl; std::istringstream ss; std::string line, str, type; - unsigned long int uli_dummy; - double d_dummy; + unsigned int uli_dummy; + double d_dummy; - unsigned long int Npoints, Ncells, Ncell_numbers; - std::vector cell_node; + unsigned long int Npoints, Ncells, Ncell_numbers, u; + std::vector cell_node; PRISMS::Coordinate _coord; + std::vector min; + std::vector N; + std::vector incr; + while (!infile.eof()) { std::getline(infile, line); @@ -244,26 +246,10 @@ namespace PRISMS std::cout << " done" << std::endl; // create bins - std::vector min; - std::vector N; - std::vector incr; std::cout << "Determine Body size" << std::endl; for (int j = 0; j < DIM; j++) { - for (unsigned int i = 1; i < hist[j].size(); i++) - { - /*if( hist[j][i] != hist[j][i-1]) - { - std::cout << "Error reading 2D vtk file." << std::endl; - std::cout << " Not rectangular." << std::endl; - std::cout << " Dimension: " << j << std::endl; - std::cout << value[j][i-1] << ": " << hist[j][i-1] << " " << - value[j][i] << ": " << hist[j][i] << std::endl; exit(1); - } - */ - } - std::sort(value[j].begin(), value[j].end()); // std::cout << "j: " << j << " back(): " << value[j].back() << // std::endl; @@ -295,6 +281,7 @@ namespace PRISMS std::cout << " done" << std::endl; } } + else if (line[0] == 'C') { if (line.size() > 4 && line.substr(0, 5) == "CELLS") @@ -305,8 +292,7 @@ namespace PRISMS ss >> str >> Ncells >> Ncell_numbers; - PFuncBase>, double> *bfunc_ptr = - nullptr; + PFuncBase>, double> *bfunc_ptr; _bfunc.push_back(bfunc_ptr); if (DIM == 2) @@ -393,15 +379,40 @@ namespace PRISMS return; } } + } + } + + // main code reading the RL coordinates and constructing cells and connectivity + // similar to unstructured grid + void + read_RL_vtk(std::ifstream &infile) + { + std::cout << "Read rectilinear file and create mesh" << std::endl; + + bool mesh_as_points = true; + std::vector x_coord, y_coord, z_coord; + + std::istringstream ss; + std::string line, str, type; + + unsigned int uli_dummy; + double d_dummy; + + unsigned long int Npoints, Ncells, Ncell_numbers, u; + std::vector cell_node; + + PRISMS::Coordinate _coord; + + std::vector min; + std::vector N; + std::vector incr; + + while (!infile.eof()) + { + std::getline(infile, line); + // std::cout << "line: " << line << std::endl; if (line[0] == 'X') { - mesh_as_points = false; - - // read X_COORDINATES info: - // X_COORDINATES # type - // x - // x - // ... if (line.size() > 12 && line.substr(0, 13) == "X_COORDINATES") { // read header line @@ -411,11 +422,10 @@ namespace PRISMS ss >> str >> Npoints >> type; std::cout << "Read X_COORDINATES: " << Npoints << std::endl; - _node.reserve(Npoints); std::cout << " reserve OK" << std::endl; for (unsigned int i = 0; i < Npoints; i++) { - double temp_coord; + float temp_coord; infile >> temp_coord; @@ -425,13 +435,6 @@ namespace PRISMS } if (line[0] == 'Y') { - mesh_as_points = false; - - // read Y_COORDINATES info: - // Y_COORDINATES # type - // y - // y - // ... if (line.size() > 12 && line.substr(0, 13) == "Y_COORDINATES") { // read header line @@ -441,15 +444,13 @@ namespace PRISMS ss >> str >> Npoints >> type; // read points - std::vector> value(DIM); - std::vector> hist(DIM); std::cout << "Read Y_COORDINATES: " << Npoints << std::endl; - _node.reserve(Npoints); + std::cout << " reserve OK" << std::endl; for (unsigned int i = 0; i < Npoints; i++) { - double temp_coord; + float temp_coord; infile >> temp_coord; @@ -459,13 +460,6 @@ namespace PRISMS } if (line[0] == 'Z') { - mesh_as_points = false; - - // read Z_COORDINATES info: - // Z_COORDINATES # type - // z - // z - // ... if (line.size() > 12 && line.substr(0, 13) == "Z_COORDINATES") { // read header line @@ -477,11 +471,11 @@ namespace PRISMS // read points std::cout << "Read Z_COORDINATES: " << Npoints << std::endl; - _node.reserve(Npoints); + std::cout << " reserve OK" << std::endl; for (unsigned int i = 0; i < Npoints; i++) { - double temp_coord; + float temp_coord; infile >> temp_coord; @@ -491,55 +485,126 @@ namespace PRISMS } } - if (!mesh_as_points) + if (mesh_as_points) { std::vector> value(DIM); std::vector> hist(DIM); - for (unsigned int i = 0; i < x_coord.size(); i++) + if (DIM > 2) + { + Npoints = + 8 * (x_coord.size() - 1) * (y_coord.size() - 1) * (z_coord.size() - 1); + } + if (DIM == 2) + { + Npoints = 4 * (x_coord.size() - 1) * (y_coord.size() - 1); + } + + // interpolated coordinates for each node of a cell + std::vector COORD_X(Npoints), COORD_Y(Npoints), COORD_Z(Npoints); + + u = 0; //(defined at the beginning of read_vtk) + if (DIM > 2) { - for (unsigned int j = 0; j < y_coord.size(); j++) + for (unsigned int i = 0; i < (z_coord.size() - 1); i++) { - for (unsigned int k = 0; k < z_coord.size(); k++) + for (unsigned int j = 0; j < (y_coord.size() - 1); j++) { - _coord[0] = x_coord.at(i); - _coord[1] = y_coord.at(j); - if (DIM > 2) + for (unsigned int k = 0; k < (x_coord.size() - 1); k++) { - _coord[2] = z_coord.at(k); - } + COORD_X[u] = x_coord.at(k); + COORD_Y[u] = y_coord.at(j); + COORD_Z[u] = z_coord.at(i); - for (int m = 0; m < DIM; m++) - add_once(value[m], hist[m], _coord[m]); + COORD_X[u + 1] = x_coord.at(k + 1); + COORD_Y[u + 1] = y_coord.at(j); + COORD_Z[u + 1] = z_coord.at(i); - _node.push_back(_coord); + COORD_X[u + 2] = x_coord.at(k); + COORD_Y[u + 2] = y_coord.at(j + 1); + COORD_Z[u + 2] = z_coord.at(i); + + COORD_X[u + 3] = x_coord.at(k + 1); + COORD_Y[u + 3] = y_coord.at(j + 1); + COORD_Z[u + 3] = z_coord.at(i); + + COORD_X[u + 4] = x_coord.at(k); + COORD_Y[u + 4] = y_coord.at(j); + COORD_Z[u + 4] = z_coord.at(i + 1); + + COORD_X[u + 5] = x_coord.at(k + 1); + COORD_Y[u + 5] = y_coord.at(j); + COORD_Z[u + 5] = z_coord.at(i + 1); + + COORD_X[u + 6] = x_coord.at(k); + COORD_Y[u + 6] = y_coord.at(j + 1); + COORD_Z[u + 6] = z_coord.at(i + 1); + + COORD_X[u + 7] = x_coord.at(k + 1); + COORD_Y[u + 7] = y_coord.at(j + 1); + COORD_Z[u + 7] = z_coord.at(i + 1); + + u += 8; + } } } } - std::cout << " done" << std::endl; + if (DIM == 2) + { + for (unsigned int j = 0; j < (y_coord.size() - 1); j++) + { + for (unsigned int k = 0; k < (x_coord.size() - 1); k++) + { + COORD_X[u] = x_coord.at(k); + COORD_Y[u] = y_coord.at(j); + COORD_Z[u] = z_coord.at(0); - // create bins - std::vector min; - std::vector N; - std::vector incr; + COORD_X[u + 1] = x_coord.at(k + 1); + COORD_Y[u + 1] = y_coord.at(j); + COORD_Z[u + 1] = z_coord.at(0); - std::cout << "Determine Body size" << std::endl; - for (int j = 0; j < DIM; j++) + COORD_X[u + 2] = x_coord.at(k); + COORD_Y[u + 2] = y_coord.at(j + 1); + COORD_Z[u + 2] = z_coord.at(0); + + COORD_X[u + 3] = x_coord.at(k + 1); + COORD_Y[u + 3] = y_coord.at(j + 1); + COORD_Z[u + 3] = z_coord.at(0); + + u += 4; + } + } + } + + // _node.reserve(Npoints); + for (unsigned int i = 0; i < Npoints; i++) { - for (unsigned int i = 1; i < hist[j].size(); i++) + _coord[0] = COORD_X[i]; + _coord[1] = COORD_Y[i]; + if (DIM > 2) { - /*if( hist[j][i] != hist[j][i-1]) - { - std::cout << "Error reading 2D vtk file." << std::endl; - std::cout << " Not rectangular." << std::endl; - std::cout << " Dimension: " << j << std::endl; - std::cout << value[j][i-1] << ": " << hist[j][i-1] << " " << - value[j][i] << ": " << hist[j][i] << std::endl; exit(1); - } - */ + _coord[2] = COORD_Z[i]; } + for (int m = 0; m < DIM; m++) + add_once(value[m], hist[m], _coord[m]); + + _node.push_back(_coord); + } + + x_coord.clear(); + y_coord.clear(); + z_coord.clear(); + COORD_X.clear(); + COORD_Y.clear(); + COORD_Z.clear(); + + std::cout << "point coordinates done" << std::endl; + + std::cout << "Determine Body size" << std::endl; + for (int j = 0; j < DIM; j++) + { std::sort(value[j].begin(), value[j].end()); // std::cout << "j: " << j << " back(): " << value[j].back() << std::endl; min.push_back(value[j][0]); @@ -570,32 +635,35 @@ namespace PRISMS std::cout << " done" << std::endl; // Now add the cell data - unsigned int Ncells = (x_coord.size() - 1) * (y_coord.size() - 1); - if (DIM > 2) + // unsigned int Ncells = (x_coord.size()-1) * (y_coord.size()-1); + if (DIM == 2) { - Ncells *= (z_coord.size() - 1); + Ncells = (_node.size() / 4); + } + else if (DIM > 2) + { + Ncells = (_node.size() / 8); } - PFuncBase>, double> *bfunc_ptr = nullptr; + PFuncBase>, double> *bfunc_ptr; _bfunc.push_back(bfunc_ptr); if (DIM == 2) { // add Quad basis function - _interp.reserve(Ncells * 4); + // _interp.reserve(Ncells*4); construct_basis_function(_bfunc.back(), "Quad"); } - else if (DIM == 3) + else if (DIM > 2) { // add Hexahedron basis function - _interp.reserve(Ncells * 8); + // _interp.reserve(Ncells*8); construct_basis_function(_bfunc.back(), "Hexahedron"); } bfunc_ptr = _bfunc.back(); std::cout << "Read CELLS: " << Ncells << std::endl; - unsigned int uli_dummy; if (DIM > 2) { uli_dummy = 8; @@ -604,9 +672,10 @@ namespace PRISMS { uli_dummy = 4; } + + cell_node.reserve(uli_dummy); for (unsigned int i = 0; i < Ncells; i++) { - cell_node.resize(uli_dummy); for (unsigned int j = 0; j < uli_dummy; j++) { cell_node[j] = i * uli_dummy + j; @@ -614,11 +683,13 @@ namespace PRISMS if (DIM == 2) { - double temp = cell_node[2]; - cell_node[2] = cell_node[3]; - cell_node[3] = temp; + std::swap(cell_node[2], cell_node[3]); + } + if (DIM > 2) + { + std::swap(cell_node[2], cell_node[3]); + std::swap(cell_node[6], cell_node[7]); } - // std::cout << cell_node[0] << " " << cell_node[1] << " " << cell_node[2] // << " " << cell_node[3] << std::endl; @@ -632,7 +703,7 @@ namespace PRISMS cell_node, _node); } - else if (DIM == 3) + else if (DIM > 2) { construct_interpolating_functions(_interp, "Hexahedron", @@ -642,15 +713,15 @@ namespace PRISMS _node); } } - std::cout << " done" << std::endl; + std::cout << "cell creation done" << std::endl; // bin interpolators std::cout << "Bin interpolating functions" << std::endl; std::cout << "num nodes: " << _node.size() << std::endl; for (unsigned int i = 0; i < _interp.size(); i++) { - std::cout << "interp: " << _interp[i] << " " << _interp[i]->min() << " " - << _interp[i]->max() << std::endl; + // std::cout << "interp: " << _interp[i] << " " << _interp[i]->min() << " " + // << _interp[i]->max() << std::endl; _bin.add_range(_interp[i], _interp[i]->min(), _interp[i]->max()); } std::cout << " done max_bin_size: " << _bin.max_size() << std::endl; @@ -851,7 +922,6 @@ namespace PRISMS // std::cout << "finish add_once()" << std::endl; } }; - } // namespace PRISMS #endif diff --git a/include/userInputParameters.h b/include/userInputParameters.h index 92af67224..542919ad8 100644 --- a/include/userInputParameters.h +++ b/include/userInputParameters.h @@ -324,7 +324,10 @@ class userInputParameters double order_parameter_threshold; double buffer_between_grains; - bool load_grain_structure; + bool load_grain_structure; + std::string load_vtk_file_type; // adding this string to know what type of vtk file you + // want to read, it will be passed to + // initialconditions.cc double min_radius_for_loading_grains; std::string grain_structure_filename; std::string grain_structure_variable_name; diff --git a/src/inputFileReader/inputFileReader.cc b/src/inputFileReader/inputFileReader.cc index 5290efbeb..baa2ec5d2 100644 --- a/src/inputFileReader/inputFileReader.cc +++ b/src/inputFileReader/inputFileReader.cc @@ -750,6 +750,16 @@ inputFileReader::declare_parameters(dealii::ParameterHandler ¶meter_hand dealii::Patterns::Bool(), "Whether to load a grain structure in from file."); + parameter_handler.declare_entry( + "vtk file type", + "UNSTRUCTURED", + dealii::Patterns::Anything(), + "Whether to load an unstructured file for grain structure."); // reads the type of + // file from the input + // parameters.prm file, + // deafault setting is + // unstructured mesh + parameter_handler.declare_entry( "Grain structure filename", "", diff --git a/src/matrixfree/initialConditions.cc b/src/matrixfree/initialConditions.cc index de534695c..70e2b36a2 100644 --- a/src/matrixfree/initialConditions.cc +++ b/src/matrixfree/initialConditions.cc @@ -90,7 +90,21 @@ MatrixFreePDE::applyInitialConditions() std::string filename = userInputs.grain_structure_filename; filename += ".vtk"; - body.read_vtk(filename); + // new section added for the choice of unstructured mesh and rectilinear mesh + if (userInputs.load_vtk_file_type == "UNSTRUCTURED") + { + body.read_vtk(filename); + } + else if (userInputs.load_vtk_file_type == "RECTILINEAR") + { + body.read_RL_vtk(filename); + } + else + { + pcout << "Error in vtk file type: Use either UNSTRUCTURED OR RECTILINEAR\n"; + abort(); + } // new section ends + ScalarField &id_field = body.find_scalar_field(userInputs.grain_structure_variable_name); @@ -344,7 +358,21 @@ MatrixFreePDE::applyInitialConditions() } std::cout << "Reading " << filename << "\n"; - body.read_vtk(filename); + // Load the data from the file using a PField + // new section added for the choice of unstructured mesh and rectilinear mesh + if (userInputs.load_vtk_file_type == "UNSTRUCTURED") + { + body.read_vtk(filename); + } + else if (userInputs.load_vtk_file_type == "RECTILINEAR") + { + body.read_RL_vtk(filename); + } + else + { + pcout << "Error in vtk file type: Use either UNSTRUCTURED OR RECTILINEAR\n"; + abort(); + } // new section ends for (const auto &index : index_list) { diff --git a/src/userInputParameters/userInputParameters.cc b/src/userInputParameters/userInputParameters.cc index a1f460ddb..ce2e62bbf 100644 --- a/src/userInputParameters/userInputParameters.cc +++ b/src/userInputParameters/userInputParameters.cc @@ -599,7 +599,10 @@ userInputParameters::userInputParameters(inputFileReader &input_fi } } - load_grain_structure = parameter_handler.get_bool("Load grain structure"); + load_grain_structure = parameter_handler.get_bool("Load grain structure"); + load_vtk_file_type = + parameter_handler.get("vtk file type"); // assign the vtk file type and getting it + // ready to send to initialconditions.cc grain_structure_filename = parameter_handler.get("Grain structure filename"); grain_structure_variable_name = parameter_handler.get("Grain structure variable name"); num_grain_smoothing_cycles = parameter_handler.get_integer(