Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • am-dept/waves
  • Xavier.Naa/waves
  • Paul.Dechamps/waves
3 results
Show changes
Commits on Source (7)
Showing
with 633 additions and 21 deletions
File added
// This .geo has been tested with gmsh 3.0.6 and 4.4.1 binaries for Mac and Linux
Macro Clear_all
allVolumes[] = Volume "*";
Recursive Delete { Volume{allVolumes[] } ; }
allSurfaces[] = Surface "*";
Recursive Delete { Surface{allSurfaces[] } ; }
allPoints[] = Point "*";
Recursive Delete { Point{allPoints[] } ; }
Return
Macro Compute_next_avaible_point_id
allPoints[] = Point "*" ;
NallPoints = #allPoints[] ;
Printf("NallPoints %f",NallPoints);
next_avaible_point_id = 0;
compute_next_avaible_point_id_verbose = 0;
For i In {0:NallPoints-1}
If(compute_next_avaible_point_id_verbose)
Printf("Compute_next_avaible_point_id %g, %g",i,allPoints[i]);
EndIf
If(allPoints[i]>= next_avaible_point_id)
next_avaible_point_id = allPoints[i] + 1;
EndIf
EndFor
Printf("Compute_next_avaible_point_id newp %g",newp);
Printf("Compute_next_avaible_point_id next_avaible_point_id %g",next_avaible_point_id);
Return
Macro Scale_axis_mm_to_m
allPoints[] = Point "*" ;
allLines[] = Line "*" ;
allSurfaces[] = Surface "*";
allVolumes[] = Volume "*";
If(usePointID)
c1[] = Point{point_OO};
EndIf
Dilate {{-c1[0],-c1[1],-c1[2]},0.001} { Volume{allVolumes[] } ; }
allPoints[] = Point "*" ;
allLines[] = Line "*" ;
allSurfaces[] = Surface "*";
allVolumes[] = Volume "*";
Return
Macro Weld_bolt
new_weld_line_loop = newreg;
Curve Loop(new_weld_line_loop) = curves_id_1[];
Plane Surface(new_weld_line_loop) = {new_weld_line_loop};
num[] = Extrude {0, 0, 0.026} {
Surface{new_weld_line_loop};
};
new_volume_1 = num[1];
num[] = Extrude {0, 0, -0.012} {
Surface{new_weld_line_loop};
};
new_volume_2 = num[1];
new_weld_line_loop = newreg;
Curve Loop(new_weld_line_loop) = curves_id_2[];
Plane Surface(new_weld_line_loop) = {new_weld_line_loop};
num[] = Extrude {0, 0, 0.002} {
Surface{new_weld_line_loop};
};
new_volume_3 = num[1];
new_weld_line_loop = newreg;
Curve Loop(new_weld_line_loop) = curves_id_3[];
Plane Surface(new_weld_line_loop) = {new_weld_line_loop};
num[] = Extrude {0, 0, -0.006} {
Surface{new_weld_line_loop};
};
new_volume_4 = num[1];
num[] = BooleanUnion{ Volume{volume_id_1}; Delete; }{ Volume{volume_id_2}; Volume{volume_id_3}; Volume{volume_id_4}; Volume{volume_id_5}; Volume{volume_id_6}; Volume{volume_id_7}; Volume{volume_id_8}; Volume{volume_id_9}; Volume{new_volume_1}; Volume{new_volume_2}; Volume{new_volume_3}; Volume{new_volume_4}; Delete; };
new_volume_1 = num[0];
Return
Macro Weld_tube
c1[] = Point{pipe_p1};
c2[] = Point{pipe_p2};
center1[] = {(c1[0]+c2[0])/2, (c1[1]+c2[1])/2, (c1[2]+c2[2])/2};
pipe_radius = Sqrt((c1[0]-center1[0])^2+(c1[1]-center1[1])^2+(c1[2]-center1[2])^2);
c1[] = Point{weld_p1};
c2[] = Point{weld_p5};
center1[] = {(c1[0]+c2[0])/2, (c1[1]+c2[1])/2, (c1[2]+c2[2])/2};
weld_radius = Sqrt((c1[0]-center1[0])^2+(c1[1]-center1[1])^2+(c1[2]-center1[2])^2);
new_weld_p1 = newp;
Point(new_weld_p1) = {(pipe_radius/weld_radius)*(c1[0]-center1[0])+center1[0],(pipe_radius/weld_radius)*(c1[1]-center1[1])+center1[1],(pipe_radius/weld_radius)*(c1[2]-center1[2])+center1[2]};
new_weld_line1 = newreg; Line(new_weld_line1) = {new_weld_p1, weld_p2};
new_weld_line2 = newreg; Line(new_weld_line2) = {weld_p2, weld_p3};
new_weld_line3 = newreg; Line(new_weld_line3) = {weld_p3, weld_p4};
new_weld_line4 = newreg; Line(new_weld_line4) = {weld_p4, new_weld_p1};
new_weld_line_loop = newreg; Line Loop(new_weld_line_loop) = {new_weld_line1,new_weld_line2,new_weld_line3,new_weld_line4};
Plane Surface(new_weld_line_loop) = {new_weld_line_loop};
c1[]=Point{weld_p3};
c2[]=Point{weld_p4};
Extrude {{c2[0]-c1[0],c2[1]-c1[1],c2[2]-c1[2]}, {center1[0], center1[1], center1[2]}, Pi} {
Surface{new_weld_line_loop};
}
Extrude {{c2[0]-c1[0],c2[1]-c1[1],c2[2]-c1[2]}, {center1[0], center1[1], center1[2]}, -Pi} {
Surface{new_weld_line_loop};
}
Return
Macro Compute_cross_and_theta
norm_1 = Sqrt(vec_1[0]^2+vec_1[1]^2+vec_1[2]^2);
norm_2 = Sqrt(vec_2[0]^2+vec_2[1]^2+vec_2[2]^2);
cross[] = {vec_1[1]*vec_2[2]-vec_1[2]*vec_2[1],vec_1[2]*vec_2[0]-vec_1[0]*vec_2[2],vec_1[0]*vec_2[1]-vec_1[1]*vec_2[0]};
norm_cross = Sqrt(cross[0]^2+cross[1]^2+cross[2]^2);
dot = vec_1[0]*vec_2[0] + vec_1[1]*vec_2[1] + vec_1[2]*vec_2[2];
theta = Acos(dot/(norm_1*norm_2));
Return
Macro Rotate_Axis
allVolumes[] = Volume "*";
If(usePointID)
c1[] = Point{point_OX_1};
c2[] = Point{point_OX_2};
Printf("Rotate_Axis point_OX_1 c1 (%g,%g,%g)",c1[0],c1[1],c1[2]);
Printf("Rotate_Axis point_OX_2 c2 (%g,%g,%g)",c2[0],c2[1],c2[2]);
EndIf
OX[] = {c2[0]-c1[0],c2[1]-c1[1],c2[2]-c1[2]};
vec_1[] = OX[];
vec_2[] = {1,0,0};
Call Compute_cross_and_theta;
Rotate {{cross[0],cross[1],cross[2]}, {0, 0, 0}, theta} { Volume{allVolumes[] } ; }
allVolumes[] = Volume "*";
If(usePointID)
c3[] = Point{point_OY_1};
c4[] = Point{point_OY_2};
Printf("Rotate_Axis point_OY_1 c3 (%g,%g,%g)",c3[0],c3[1],c3[2]);
Printf("Rotate_Axis point_OY_2 c4 (%g,%g,%g)",c4[0],c4[1],c4[2]);
EndIf
OY[] = {c4[0]-c3[0],c4[1]-c3[1],c4[2]-c3[2]};
vec_1[] = OY[];
vec_2[] = {0,1,0};
Call Compute_cross_and_theta;
Rotate {{cross[0],cross[1],cross[2]}, {0, 0, 0}, theta} { Volume{allVolumes[] } ; }
Return
Macro Translate_Axis
allVolumes[] = Volume "*";
If(usePointID)
c1[] = Point{point_OO};
Printf("Translate_Axis point_OO c1 (%g,%g,%g)",c1[0],c1[1],c1[2]);
EndIf
Translate {-c1[0],-c1[1],-c1[2]} { Volume{allVolumes[] } ; }
allVolumes[] = Volume "*";
Return
Macro Contact_disk
c1[] = Point{point_disk_R_1};
c2[] = Point{point_disk_R_2};
center[] = {(c1[0]+c2[0])/2, (c1[1]+c2[1])/2, (c1[2]+c2[2])/2};
R = mR * Sqrt((c1[0]-center[0])^2+(c1[1]-center[1])^2+(c1[2]-center[2])^2);
c1[] = Point{point_surface_disk_1};
c2[] = Point{point_surface_disk_2};
new_disk = newreg;
Disk(new_disk) = {(c1[0]+c2[0])/2, (c1[1]+c2[1])/2, (c1[2]+c2[2])/2, R, R};
Printf("c1 (%g,%g,%g)",c1[0],c1[1],c1[2]);
Printf("c2 (%g,%g,%g)",c2[0],c2[1],c2[2]);
Printf("Center (%g,%g,%g) radius %g",(c1[0]+c2[0])/2, (c1[1]+c2[1])/2, (c1[2]+c2[2])/2, R) ;
BooleanFragments{ Surface{new_disk}; Delete; }{ Volume{volume_id}; Delete; }
Return
Macro Add_Optical_Axis
If(usePointID)
p1[] = Point{point_mirror_x};
p2[] = Point{point_mirror_y};
Printf("Add_Optical_Axis p1 (%g,%g,%g)",p1[0],p1[1],p1[2]);
Printf("Add_Optical_Axis p2 (%g,%g,%g)",p2[0],p2[1],p2[2]);
EndIf
Printf("Add_Optical_Axis OA (%g,%g,%g)",p1[0]+Delta_x,p2[1]+Delta_y,p1[2]);
Call Compute_next_avaible_point_id;
OA = next_avaible_point_id;
Point(OA) = {p1[0]+Delta_x, p2[1]+Delta_y, p1[2], 1};
new_disk = newreg;
Disk(new_disk) = {p1[0]+Delta_x, p2[1]+Delta_y, p1[2], R, R};
BooleanFragments{ Point{OA}; Surface{new_disk}; Delete; }{ Volume{Mirror_id}; Delete; }
BooleanFragments{ Point{OA}; Delete; }{ Volume{Mirror_id}; Delete; }
Return
SetFactory("OpenCASCADE");
rerun = 0;
If(!FileExists("contact_mirror_assembly_mm.brep") || rerun)
v() = ShapeFromFile("mirror_assembly.stp");
For k In {20:23:1}
Recursive Delete { Volume{k}; }
EndFor
For k In {27:62:1}
Recursive Delete { Volume{k}; }
EndFor
volumes1[] = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,24,25,26};
BooleanFragments{ Volume{volumes1[] }; Delete; }{}
volumes2[] = {16,19};
BooleanFragments{ Volume{volumes2[] }; Delete; }{}
usePointID = 0;
// Realign the axis
If(usePointID)
point_OX_1 = 835;
point_OX_2 = 834;
point_OY_1 = 938;
point_OY_2 = 940;
Else
c1[] = {6492.32979087,-145.832273844,4445.62173365};
c2[] = {6411.66078991,-103.544497493,4385.74472425};
c3[] = {-7270.05243185,1092.57096931,2726.17090744};
c4[] = {-7270.05243185,1128.49789026,2747.92536333};
EndIf
Call Rotate_Axis;
If(usePointID)
point_OO = 938;
Else
c1[] = {-7294.05,2346.64,1780.06};
EndIf
Call Translate_Axis;
Recursive Delete { Volume{3,17,18}; }
mR = 1.25;
point_disk_R_1 = 4848;
point_disk_R_2 = 4849;
point_surface_disk_1 = 4760;
point_surface_disk_2 = 4758;
volume_id = 19;
Call Contact_disk;
mR = 1.25;
point_disk_R_1 = 4815;
point_disk_R_2 = 4814;
point_surface_disk_1 = 4916;
point_surface_disk_2 = 4914;
volume_id = 19;
Call Contact_disk;
mR = 1.25;
point_disk_R_1 = 4780;
point_disk_R_2 = 4781;
point_surface_disk_1 = 4924;
point_surface_disk_2 = 4925;
volume_id = 19;
Call Contact_disk;
mR = 1.;
point_disk_R_1 = 4848;
point_disk_R_2 = 4849;
point_surface_disk_1 = 4332;
point_surface_disk_2 = 4330;
volume_id = 16;
Call Contact_disk;
mR = 1.;
point_disk_R_1 = 4848;
point_disk_R_2 = 4849;
point_surface_disk_1 = 4975;
point_surface_disk_2 = 4974;
volume_id = 16;
Call Contact_disk;
mR = 1.;
point_disk_R_1 = 4246;
point_disk_R_2 = 4245;
point_surface_disk_1 = 4968;
point_surface_disk_2 = 4967;
volume_id = 16;
Call Contact_disk;
Save "contact_mirror_assembly_mm.brep";
Call Clear_all;
EndIf
Merge "contact_mirror_assembly_mm.brep";
Physical Volume("Mirror") = {2};
Physical Volume("Substrate") = {1};
Physical Volume("Washer 1") = {5};
Physical Volume("Washer 2") = {4};
Physical Volume("Washer 3") = {3};
Physical Volume("Shaft 1") = {8};
Physical Volume("Shaft 2") = {7};
Physical Volume("Shaft 3") = {6};
Physical Volume("Spacer 1 part 1") = {12};
Physical Volume("Spacer 2 part 1") = {11};
Physical Volume("Spacer 3 part 1") = {9};
Physical Volume("Spacer 1 part 2") = {14};
Physical Volume("Spacer 2 part 2") = {13};
Physical Volume("Spacer 3 part 2") = {10};
Physical Volume("Holder") = {15,16};
Physical Volume("Nut 1") = {18};
Physical Volume("Nut 2") = {19};
Physical Volume("Nut 3") = {17};
Physical Surface("Mirror surface") = {113};
Physical Surface("Cooling channels") = {508, 509, 525, 527, 523, 522, 498, 499, 510, 511, 512, 513, 514, 515, 516, 517, 518, 519, 521, 520, 500, 501, 502, 503, 504, 505, 506, 507, 526, 600, 620, 621, 598, 599};
Physical Surface("Holder z clamping") = {563, 564, 574, 573, 546, 545};
Physical Surface("Holder x-y clamping") = {548, 547, 570, 569, 555, 554};
Physical Surface("Holder to nut 1") = {644};
Physical Surface("Holder to nut 2") = {645};
Physical Surface("Holder to nut 3") = {643};
Physical Surface("Holder to spacer 1") = {372};
Physical Surface("Holder to spacer 2") = {371};
Physical Surface("Holder to spacer 3") = {363};
Physical Surface("Nut 1 to holder") = {680};
Physical Surface("Nut 2 to holder") = {711};
Physical Surface("Nut 3 to holder") = {649};
Physical Surface("Spacer 1 to holder") = {352};
Physical Surface("Spacer 2 to holder") = {342};
Physical Surface("Spacer 3 to holder") = {302};
Physical Point("Holder x-y-z clamping point") = {765};
Physical Point("Holder z clamping point") = {743};
Physical Point("Holder z-y clamping point") = {736};
Physical Point("Optical Axis") = {958};
Mesh.Algorithm = 6;
//Mesh.Algorithm3D = 4;
Mesh.CharacteristicLengthMin = 1.;
Mesh.CharacteristicLengthMax = 1.;
Mesh.MshFileVersion = 2.2;
#!/usr/bin/env python
# -*- coding: latin-1; -*-
from __future__ import print_function
from __future__ import division
from builtins import str
from builtins import range
from past.utils import old_div
import katropton as m
import tbox
import tbox.gmsh as gmsh
import katropton.utilities as u
import numpy as np
import shlex
import subprocess
import os
import tarfile
import glob
from katropton.Juelich.UQ.halton import *
from katropton.Juelich.UQ.copulas import *
def evaluate_one_ensemble(ensemble_size,
msh,
comm,
file_dir,
randomVariable_1,
randomVariable_2,
randomVariable_3,
scale_u,
scale_T,
option,
baking=False):
from fwk.wutils import parseargs
args = parseargs()
from PyTrilinos import Teuchos
import numpy as np
small_disk_footprint = False
use_block = True
comm, rank, siz = m.utilities.import_MPI()
solverList = Teuchos.ParameterList()
solverList['type'] = "BlockGmres"
solverList['Maximum Iterations'] = 500
solverList['Verbosity'] = 33
solverList['Flexible Gmres'] = False
solverList['Output Style'] = 1
solverList['Output Frequency'] = 1
solverList['Use preconditioner'] = True
solverList['Print Teuchos timers'] = True
solverList['Write txt files'] = True
if small_disk_footprint:
solverList['Write vtk files'] = False
solverList['convert MueLu xml file'] = True
solverList["use xml file"] = True
solverList['Ensemble Convergence Tolerance'] = 10**(-8)
solverList[
"MueLu xml file name"] = file_dir + '/../smoothers/heat_no_contact_mtgs.xml'
solverList["Scaled Block 0"] = True
pbl = m.Problem(msh, comm)
def main():
comm, rank, size = m.utilities.import_MPI()
from PyTrilinos import Teuchos
import numpy as np
geo_name = 'contact_mirror_assembly_mm.geo'
file_dir = os.path.dirname(__file__)
work_dir = os.getcwd()
msh, mesh_name, partitioned_mesh_name = u.read_mesh_MPI(
geo_name, file_dir+'/../mesh', work_dir, comm, rank, size)
solverList = Teuchos.ParameterList()
solverList['type'] = "BlockGmres"
solverList['Maximum Iterations'] = 500
solverList['Verbosity'] = 33
solverList['Flexible Gmres'] = False
solverList['Output Style'] = 1
solverList['Output Frequency'] = 1
solverList['Use preconditioner'] = True
solverList['Print Teuchos timers'] = True
solverList['Write txt files'] = True
solverList['convert MueLu xml file'] = True
solverList["use xml file"] = True
solverList['Ensemble Convergence Tolerance'] = 10**(-8)
solverList[
"MueLu xml file name"] = file_dir + '/../smoothers/heat_no_contact_mtgs.xml'
solverList["Scaled Block 0"] = True
file_dir = os.path.dirname(__file__)
work_dir = os.getcwd()
pbl = m.Problem(msh, comm)
ensemble_size = 1
scale_u = 1000.
scale_T = 1.
scale_E = 1. / scale_u**2
scale_k = old_div(scale_T, scale_u)
scale_hsource = 1. / scale_u**3
scale_hflux = 1. / scale_u**2
scale_d = scale_T
# 379 000 MPa = 379 GPa = 379E9 Pa
E_rhodium = 379E9 * np.ones(ensemble_size) * scale_E
nu_rhodium = 0.26 * np.ones(ensemble_size)
# 0.150 kW/(m K) = 150 W/(m K)
k_rhodium = 150 * scale_k
d_rhodium = 0.781E-05 * scale_d
E_WCu = 280E9 * np.ones(ensemble_size) * scale_E
nu_WCu = 0.298 * np.ones(ensemble_size)
k_WCu = 180 * scale_k
d_WCu = 0.88E-05 * scale_d
E_SS = 200E9 * np.ones(ensemble_size) * scale_E
nu_SS = 0.3 * np.ones(ensemble_size)
k_SS = 15.3 * scale_k
d_SS = 1.57E-05 * scale_d
E_CuCrZr = 118E9 * np.ones(ensemble_size) * scale_E
nu_CuCrZr = 0.33 * np.ones(ensemble_size)
k_CuCrZr = 345 * np.ones(ensemble_size) * scale_k
d_CuCrZr = 1.8E-05 * np.ones(ensemble_size) * scale_d
E_AlN = 320E9 * np.ones(ensemble_size) * scale_E
nu_AlN = 0.24 * np.ones(ensemble_size)
k_AlN = 180 * np.ones(ensemble_size) * scale_k
d_AlN = 0.48E-05 * scale_d
E_I718 = 183E9 * np.ones(ensemble_size) * scale_E
nu_I718 = 0.31 * np.ones(ensemble_size)
k_I718 = 15.8 * scale_k
d_I718 = 1.38E-05 * scale_d
T_ref = 22.
m.Medium(pbl, "Mirror", "rhodium", E_rhodium, nu_rhodium, k_rhodium,
d_rhodium)
m.Medium(pbl, "Substrate", "WCu", E_WCu, nu_WCu, k_WCu, d_WCu)
m.Medium(pbl, "Holder", "CuCrZr", E_CuCrZr, nu_CuCrZr, k_CuCrZr, d_CuCrZr)
m.Medium(pbl, "Washer 1", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Washer 2", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Washer 3", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Shaft 1", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Shaft 2", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Shaft 3", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Nut 1", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Nut 2", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Nut 3", "I718", E_I718, nu_I718, k_I718, d_I718)
m.Medium(pbl, "Spacer 1 part 1", "AlN", E_AlN, nu_AlN,
180. * scale_k, d_AlN)
m.Medium(pbl, "Spacer 2 part 1", "AlN", E_AlN, nu_AlN,
180. * scale_k, d_AlN)
m.Medium(pbl, "Spacer 3 part 1", "AlN", E_AlN, nu_AlN,
180. * scale_k, d_AlN)
m.Medium(pbl, "Spacer 1 part 2", "WCu", E_WCu, nu_WCu, k_WCu, d_WCu)
m.Medium(pbl, "Spacer 2 part 2", "WCu", E_WCu, nu_WCu, k_WCu, d_WCu)
m.Medium(pbl, "Spacer 3 part 2", "WCu", E_WCu, nu_WCu, k_WCu, d_WCu)
m.Dirichlet(pbl, "Holder x-y-z clamping point", "Clamped", 1, 0., 1, 0., 1,
0., 0, 0., ensemble_size)
m.Dirichlet(pbl, "Holder z clamping point", "Clamped", 0, 0., 0, 0., 1, 0.,
0, 0., ensemble_size)
m.Dirichlet(pbl, "Holder z-y clamping point", "Clamped", 0, 0., 1, 0., 1,
0., 0, 0., ensemble_size)
m.Dirichlet(pbl, "Cooling channels", "Clamped", 0, 0., 0, 0., 0, 0., 1,
old_div((70. - T_ref), scale_T), ensemble_size)
m.Dirichlet(pbl, "Mirror surface", "Clamped", 1, 0., 1, 0., 1, -10., 1,
old_div((70. - T_ref), scale_T), ensemble_size)
'''
zero = np.zeros(ensemble_size)
hf = 20. / 0.0121 * np.ones(
ensemble_size) * scale_hflux # 20 W / (0.0121 m^2)
m.Neumann(pbl, "Mirror surface", "heat fluxes", 0, zero, 0, zero, 0, zero,
1, hf, ensemble_size)
m.Source(pbl, "Mirror", "ihg", 20E6 * scale_hsource)
m.Source(pbl, "Substrate", "ihg", 2.45E6 * scale_hsource)
if material_option(option) == 1:
m.Source(pbl, "Holder", "ihg", 0.7E6 * scale_hsource)
elif material_option(option) == 2:
m.Source(pbl, "Holder", "ihg", 0.6E6 * scale_hsource)
m.Source(pbl, "Spacer 1 part 1", "ihg", 0.3E6 * scale_hsource)
m.Source(pbl, "Spacer 2 part 1", "ihg", 0.3E6 * scale_hsource)
m.Source(pbl, "Spacer 3 part 1", "ihg", 0.3E6 * scale_hsource)
m.Source(pbl, "Spacer 1 part 2", "ihg", 2.45E6 * scale_hsource)
m.Source(pbl, "Spacer 2 part 2", "ihg", 2.45E6 * scale_hsource)
m.Source(pbl, "Spacer 3 part 2", "ihg", 2.45E6 * scale_hsource)
m.Source(pbl, "Shaft 1", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Shaft 2", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Shaft 3", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Nut 1", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Nut 2", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Nut 3", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Washer 1", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Washer 2", "ihg", 0.8E6 * scale_hsource)
m.Source(pbl, "Washer 3", "ihg", 0.8E6 * scale_hsource)
'''
nThreads = u.Initialize_Kokkos()
slv = m.IterativeSolver(pbl, solverList, 4, ensemble_size)
slv.start()
u.Finalize_Kokkos()
if __name__ == "__main__":
main()
......@@ -129,15 +129,11 @@ void test_function(int ensemble_size)
discreteProblem.computeMatrices();
discreteProblem.computeLoads();
//RCP<vector_type> r (new vector_type(discreteProblem.algebraic->map.mapDofs, true));
//discreteProblem.algebraic->matrices->A->apply(*(discreteProblem.algebraic->vectors->x),*r,Teuchos::NO_TRANS,(scalar) -1.,(scalar) 1.);
typedef multivector_type MV;
typedef typename multivector_type::dot_type belos_scalar;
typedef Tpetra::Operator<scalar> OP;
typedef Belos::LinearProblem<belos_scalar, MV, OP> BLinProb;
RCP<BLinProb> blinproblem = rcp(new BLinProb(discreteProblem.algebraic->matrices->A, discreteProblem.algebraic->vectors->x, discreteProblem.algebraic->vectors->b));
RCP<BLinProb> blinproblem = rcp(new BLinProb(discreteProblem.algebraic->matrices->K, discreteProblem.algebraic->vectors->x, discreteProblem.algebraic->vectors->b));
blinproblem->setProblem();
RCP<Teuchos::ParameterList> belosParams = rcp(new Teuchos::ParameterList(solverList));
RCP<Belos::SolverManager<belos_scalar, MV, OP>> blinsolver =
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......
......@@ -81,7 +81,7 @@
<ParameterList name="myInterfaceAggs2">
<Parameter name="factory" type="string" value="InterfaceAggregationFactory"/>
<Parameter name="Aggregates" type="string" value="myAggFact1"/> <!-- use aggregates from velocity block! -->
<Parameter name="number of DOFs per node" type="int" value="3"/>
<Parameter name="number of DOFs per dual node" type="int" value="3"/>
<Parameter name="DualNodeID2PrimalNodeID" type="string" value="myInterfaceMappingFact" />
</ParameterList>
......