Skip to content

Commit 3e526bf

Browse files
committed
Update to add wheel support for MLM in formax
1 parent 273f44d commit 3e526bf

13 files changed

+545
-53
lines changed

CMakeList.pm

+64-5
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@ sub new
2323
depLists => undef,
2424
optimise => "",
2525
gtk => 0,
26+
root => 0,
27+
matplot => 0,
2628
debug => "",
2729
noregex => 0,
2830

@@ -44,6 +46,40 @@ sub new
4446
return $self;
4547
}
4648

49+
sub processRootWindow
50+
##
51+
## Add an array of programs
52+
## Names : Controlflags
53+
##
54+
{
55+
my $self=shift;
56+
my $DX=shift;
57+
my $exeName=shift;
58+
59+
my $Dname="rootWindowInc"; ## Directory to scane
60+
61+
my $cppAll=`ls ./$Dname/*.h 2> /dev/null`;
62+
63+
$cppAll=~s/\n/ /g;
64+
my $rootcmd=
65+
" rootcling -f ../rootWindow/winLinkDef.cxx -c ".$cppAll;
66+
67+
# print $DX "add_custom_command(TARGET ",$exeName," PRE_BUILD \n",
68+
# " COMMAND rootcint -f ./rootWindow/winLinkDef.cxx -c ",$cppAll,"\n",
69+
# " COMMAND sed -i \'s/include \\\"\\\.\\\/rootWindowInc\\\//include /#\' ./rootWindow/winLinkDef.cxx \n",
70+
# " COMMAND echo \"ADSFADF\"",
71+
# ")\n";
72+
# print $DX "add_custom_command(TARGET ",$exeName," PRE_BUILD \n",
73+
# " WORKING_DIRECTORY rootWindowInc\n",
74+
# " COMMAND rootcint -f ../rootWindow/winLinkDef.cxx -c ",$cppAll,"\n"#,
75+
# " COMMAND echo \"ADSFADF\"",
76+
# ")\n";
77+
print $DX "\n";
78+
79+
80+
return;
81+
}
82+
4783
sub addMasterProgs
4884
##
4985
## Add an array of programs
@@ -295,7 +331,8 @@ sub setParameters
295331
$self->{bcomp}=$1 if ($Ostr=~/-gcc=(.*)/);
296332
$self->{ccomp}=$1 if ($Ostr=~/-g\+\+=(.*)/);
297333
$self->{cxx11}="" if ($Ostr=~/-std/);
298-
334+
$self->{root}=1 if ($Ostr=~/-root/);
335+
$self->{mapplot}=1 if ($Ostr=~/-matplot/);
299336
}
300337
}
301338
# $self->{gsl}*=$nogsl;
@@ -320,8 +357,10 @@ sub writeHeader
320357
my $DX=shift; ## FILEGLOB
321358

322359
print $DX "project(CombLayer)\n";
323-
print $DX "cmake_minimum_required(VERSION 3.0)\n\n";
360+
print $DX "cmake_minimum_required(VERSION 3.1)\n\n";
324361

362+
print $DX "set(ROOTCFLAGS \$(shell root-config --cflags))\n";
363+
print $DX "set(ROOTLIBS \$(shell root-config --glibs))\n";
325364

326365
print $DX "set(CMAKE_CXX_COMPILER ",$self->{ccomp},")\n";
327366
# print $DX "set(CMAKE_CXX_CLANG_TIDY clang-tidy; -checks=*)\n";
@@ -346,7 +385,13 @@ sub writeHeader
346385
print $DX "find_package(PkgConfig REQUIRED)\n";
347386
print $DX "pkg_check_modules(GTK3 REQUIRED gtk+-3.0)\n";
348387
}
349-
388+
389+
if ($self->{root})
390+
{
391+
print $DX "list(APPEND CMAKE_PREFIX_PATH $ENV{ROOTSYS})\n";
392+
print $DX "find_package(ROOT REQUIRED)\n";
393+
}
394+
350395
foreach my $item (@{$self->{definitions}})
351396
{
352397
print $DX "add_definitions(-D",$item,")\n";
@@ -421,6 +466,12 @@ sub writeExcutables
421466
{
422467
print $DX "add_executable(",$item," \${PROJECT_SOURCE_DIR}/Main/",
423468
$item,".cxx)\n";
469+
if ($self->{root})
470+
{
471+
print $DX "set_source_files_properties(",$item,
472+
" PROPERTIES COMPILE_FLAGS ROOTCFLAGS)\n";
473+
$self->processRootWindow($DX,$item);
474+
}
424475

425476
## Special first and last item
426477
my $lastUnit=undef;
@@ -440,12 +491,20 @@ sub writeExcutables
440491
$item," lib",$lastUnit," -Wl,--end-group)\n";
441492

442493
}
443-
444494
if (!$self->{noregex})
445495
{
446-
# print $DX "target_link_libraries(",$item," boost_regex)\n";
447496
print $DX "target_link_libraries(",$item," boost_filesystem)\n";
448497
}
498+
if ($self->{root})
499+
{
500+
print $DX "include(\${ROOT_USE_FILE})\n";
501+
print $DX "link_directories(\${ROOT_LIBRARY_DIR})\n";
502+
## print $DX "target_link_libraries(",$item," \${ROOT_LIBRARIES})\n";
503+
my $unit=`root-config --glibs`;
504+
## print $DX "target_link_options(",$item," \$(ROOTLIBS))\n";
505+
print $DX "target_link_libraries(",$item," ",$unit,")\n";
506+
}
507+
449508
print $DX "target_link_libraries(",$item," stdc++)\n";
450509
print $DX "target_link_libraries(",$item," gsl)\n";
451510
print $DX "target_link_libraries(",$item," gslcblas)\n";

Model/MaxIV/commonGenerator/MLMDetailGenerator.cxx

+47-3
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,13 @@ MLMDetailGenerator::MLMDetailGenerator() :
7676
radialBladeThick(0.6),radialBladeTopGap(6.07/4.0),
7777
radialBladeBaseGap(12.67/4.0),
7878

79+
WPlength(23.4),WPwidth(27.0),WPthick(2.8),
80+
WPridgeThick(1.2),WPridgeLen(1.7),
81+
WPoutSlotLength(8.0),
82+
WPoutSlotWidth(5.0),
83+
WPmidSlotXStep(-5.0),WPmidSlotLength(7.0),
84+
WPmidSlotWidth(4.5),
85+
7986
plateMat("Stainless304"),mirrorMat("Silicon300K"),
8087
baseMat("Copper"),voidMat("Void")
8188
/*!
@@ -135,6 +142,7 @@ MLMDetailGenerator::makeRadialSupport(FuncDataBase& Control,
135142
Control.addVariable(rName+"BladeTopGap",radialBladeTopGap);
136143
Control.addVariable(rName+"BladeBaseGap",radialBladeBaseGap);
137144

145+
138146
Control.addVariable(rName+"BaseMat",baseMat);
139147
Control.addVariable(rName+"PlateMat",plateMat);
140148
Control.addVariable(rName+"VoidMat",voidMat);
@@ -174,10 +182,44 @@ MLMDetailGenerator::makeSupportWheel(FuncDataBase& Control,
174182
Control.addVariable(wheelName+"SpokeCornerGap",spokeCornerGap);
175183

176184
Control.addVariable(wheelName+"Mat",baseMat);
177-
185+
178186
return;
179187
}
188+
189+
void
190+
MLMDetailGenerator::makeWheelPlate(FuncDataBase& Control,
191+
const std::string& keyName,
192+
const double xStep,
193+
const double yStep) const
194+
/*!
195+
Build the variables for the wheel plate supporting the
196+
wheel.
197+
\param Control :: Database
198+
\param keyName :: extra name for plate
199+
*/
200+
201+
{
202+
ELog::RegMethod RegA("MLMDetailGenerator","makeWheelPlate");
203+
204+
Control.addVariable(keyName+"XStep",xStep);
205+
Control.addVariable(keyName+"YStep",yStep);
180206

207+
Control.addVariable(keyName+"Length",WPlength);
208+
Control.addVariable(keyName+"Width",WPwidth);
209+
Control.addVariable(keyName+"Thick",WPthick);
210+
Control.addVariable(keyName+"RidgeThick",WPridgeThick);
211+
Control.addVariable(keyName+"RidgeLen",WPridgeLen);
212+
Control.addVariable(keyName+"OutSlotWidth",WPoutSlotWidth);
213+
Control.addVariable(keyName+"OutSlotLength",WPoutSlotLength);
214+
Control.addVariable(keyName+"MidSlotXStep",WPmidSlotXStep);
215+
Control.addVariable(keyName+"MidSlotLength",WPmidSlotLength);
216+
Control.addVariable(keyName+"MidSlotWidth",WPmidSlotWidth);
217+
Control.addVariable(keyName+"PlateMat",plateMat);
218+
Control.addVariable(keyName+"VoidMat",voidMat);
219+
220+
return;
221+
}
222+
181223
void
182224
MLMDetailGenerator::makeCrystal(FuncDataBase& Control,
183225
const std::string& cryName,
@@ -230,7 +272,8 @@ MLMDetailGenerator::makeCrystal(FuncDataBase& Control,
230272

231273
return;
232274
}
233-
275+
276+
234277
void
235278
MLMDetailGenerator::generateMono(FuncDataBase& Control,
236279
const std::string& keyName,
@@ -244,7 +287,7 @@ MLMDetailGenerator::generateMono(FuncDataBase& Control,
244287
245288
*/
246289
{
247-
ELog::RegMethod RegA("MLMDetailGenerator","generateBox");
290+
ELog::RegMethod RegA("MLMDetailGenerator","generateMono");
248291

249292
// guess of separation
250293
const double xstalYStep(gap/tan(2.0*M_PI*thetaA/180.0));
@@ -254,6 +297,7 @@ MLMDetailGenerator::generateMono(FuncDataBase& Control,
254297

255298
makeSupportWheel(Control,keyName+"BWheel",0.0,0.0);
256299
makeRadialSupport(Control,keyName+"Radial",0.0,0.0);
300+
makeWheelPlate(Control,keyName+"WheelPlate",0.0,3.0);
257301

258302
return;
259303

Model/MaxIV/commonGeneratorInc/MLMDetailGenerator.h

+18
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,22 @@ class MLMDetailGenerator
9797
double radialBladeThick; ///< blade thickness
9898
double radialBladeTopGap; ///< blade separation at top
9999
double radialBladeBaseGap; ///< blade separation at base
100+
101+
// wheel plate:
102+
103+
double WPlength; ///< Total length
104+
double WPwidth; ///< Total width
105+
double WPthick; ///< Total thickness (include ridge)
106+
double WPridgeThick; ///< Thickness of just the front/back ridges
107+
double WPridgeLen; ///< length of front/back
100108

109+
double WPoutSlotLength; ///< Out slot length
110+
double WPoutSlotWidth; ///< Slot width
111+
112+
double WPmidSlotXStep; ///< Displacement of slot
113+
double WPmidSlotLength; ///< mid slot length
114+
double WPmidSlotWidth; ///< Mid slot width
115+
101116
std::string plateMat; ///< Plate material
102117
std::string mirrorMat; ///< XStal material
103118
std::string baseMat; ///< Base material
@@ -108,6 +123,9 @@ class MLMDetailGenerator
108123

109124
void makeSupportWheel(FuncDataBase&,const std::string&,
110125
const double,const double) const;
126+
127+
void makeWheelPlate(FuncDataBase&,const std::string&,
128+
const double,const double) const;
111129

112130
void makeCrystal(FuncDataBase&,const std::string&,
113131
const bool,const double,

Model/MaxIV/formax/MLMCrystal.cxx

+12-12
Original file line numberDiff line numberDiff line change
@@ -272,27 +272,27 @@ MLMCrystal::createLinks()
272272
FixedComp::setConnect(1,Origin+Y*(length/2.0),-Y);
273273
FixedComp::setLinkSurf(1,SMap.realSurf(buildIndex+2));
274274

275-
FixedComp::setConnect(3,Origin,-X);
276-
FixedComp::setLinkSurf(3,-SMap.realSurf(buildIndex+3));
275+
FixedComp::setConnect(2,Origin,-X);
276+
FixedComp::setLinkSurf(2,-SMap.realSurf(buildIndex+3));
277277

278-
FixedComp::setConnect(4,Origin+X*width,X);
279-
FixedComp::setLinkSurf(4,SMap.realSurf(buildIndex+4));
278+
FixedComp::setConnect(3,Origin+X*width,X);
279+
FixedComp::setLinkSurf(3,SMap.realSurf(buildIndex+4));
280280

281-
FixedComp::setConnect(5,Origin-Z*(height/2.0+baseDepth),-Z);
282-
FixedComp::setLinkSurf(5,SMap.realSurf(buildIndex+105));
281+
FixedComp::setConnect(4,Origin-Z*(height/2.0+baseDepth),-Z);
282+
FixedComp::setLinkSurf(4,SMap.realSurf(buildIndex+105));
283283

284-
FixedComp::setConnect(6,Origin+Z*(height/2.0),Z);
285-
FixedComp::setLinkSurf(6,SMap.realSurf(buildIndex+6));
284+
FixedComp::setConnect(5,Origin+Z*(height/2.0),Z);
285+
FixedComp::setLinkSurf(5,SMap.realSurf(buildIndex+6));
286286

287287
// shifted base point but keeping normal orientation
288-
FixedComp::setConnect(7,Origin-Z*(height/2.0+baseDepth),Y);
289-
FixedComp::setLinkSurf(7,SMap.realSurf(buildIndex+105));
288+
FixedComp::setConnect(6,Origin-Z*(height/2.0+baseDepth),Y);
289+
FixedComp::setLinkSurf(6,SMap.realSurf(buildIndex+105));
290290

291291
// Points on base:
292292

293293
nameSideIndex(2,"BeamCentre");
294-
nameSideIndex(5,"BaseRotPt");
295-
nameSideIndex(7,"BasePt");
294+
nameSideIndex(4,"BaseRotPt");
295+
nameSideIndex(6,"BasePt");
296296
return;
297297
}
298298

Model/MaxIV/formax/MLMRadialSupport.cxx

+4-3
Original file line numberDiff line numberDiff line change
@@ -186,8 +186,8 @@ MLMRadialSupport::createSurfaces()
186186
const double h=supportInnerLift;
187187
const double S=sideFullWidth/2.0;
188188
const double R=(h*h+S*S)/(2.0*h);
189+
189190
const Geometry::Vec3D cylOrg=pOrg-Z*(R+supportHeight-supportOuterHeight);
190-
ELog::EM<<"Cente == "<<cylOrg<<":"<<cylOrg+Z*R<<ELog::endDiag;
191191

192192
ModelSupport::buildCylinder(SMap,buildIndex+507,cylOrg,Y,R);
193193

@@ -222,7 +222,6 @@ MLMRadialSupport::createSurfaces()
222222
int BI=buildIndex+1000;
223223
for(size_t i=0;i<5;i++)
224224
{
225-
ELog::EM<<"Top == "<<topPt<<":: "<<basePt<<ELog::endDiag;
226225
ModelSupport::buildPlane(SMap,BI+3,
227226
topPt-X*(bladeThick/2.0),
228227
basePt-X*(bladeThick/2.0),
@@ -352,7 +351,9 @@ MLMRadialSupport::createLinks()
352351
ELog::RegMethod RegA("MLMRadialSupport","createLinks");
353352

354353
HeadRule HR;
354+
355355

356+
356357
return;
357358
}
358359

@@ -370,7 +371,7 @@ MLMRadialSupport::createAll(Simulation& System,
370371
ELog::RegMethod RegA("MLMRadialSupport","createAll");
371372
populate(System.getDataBase());
372373

373-
createCentredUnitVector(FC,sideIndex,0.0);
374+
createUnitVector(FC,sideIndex);
374375
createSurfaces();
375376
createObjects(System);
376377
createLinks();

0 commit comments

Comments
 (0)