MCPcopy Create free account
hub / github.com/OpenSees/OpenSees / partitionModel

Function partitionModel

SRC/runtime/commands/parallel/partition.cpp:101–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

99}
100
101static int
102partitionModel(PartitionRuntime& part, int eleTag)
103{
104 if (part.partitioned == true)
105 return 0;
106
107 int result = 0;
108
109 if (part.channels != nullptr)
110 delete[] part.channels;
111
112 part.channels = new Channel *[part.num_subdomains];
113
114 // create some subdomains
115 for (int i = 1; i <= part.num_subdomains; i++) {
116 if (i != part.main_partition) {
117 ShadowSubdomain *theSubdomain =
118 new ShadowSubdomain(i, *part.machine, *part.broker);
119 part.theDomain.addSubdomain(theSubdomain);
120 part.channels[i - 1] = theSubdomain->getChannelPtr();
121 }
122 }
123
124 // create a partitioner & partition the domain
125 if (part.DOMAIN_partitioner == nullptr) {
126 // part.balancer = new ShedHeaviest();
127 // OPS_DOMAIN_partitioner = new DomainPartitioner(*OPS_GRAPH_partitioner, *part.balancer);
128 part.GRAPH_partitioner = new Metis;
129 part.DOMAIN_partitioner = new DomainPartitioner(*part.GRAPH_partitioner);
130 part.theDomain.setPartitioner(part.DOMAIN_partitioner);
131 }
132
133 result = part.theDomain.partition(part.num_subdomains, part.using_main_domain,
134 part.main_partition, eleTag);
135
136 if (result < 0)
137 return result;
138
139 part.partitioned = true;
140
141 DomainDecompositionAnalysis *theSubAnalysis;
142 SubdomainIter &theSubdomains = part.theDomain.getSubdomains();
143 Subdomain *theSub = nullptr;
144
145 void* the_static_analysis = nullptr;
146
147 return result;
148}
149
150
151static int

Callers 1

opsPartitionFunction · 0.70

Calls 4

addSubdomainMethod · 0.80
setPartitionerMethod · 0.80
getChannelPtrMethod · 0.45
partitionMethod · 0.45

Tested by

no test coverage detected