def _GetPartitionedFSIUtilities(self):
     if (self.domain_size == 2):
         return KratosTrilinos.TrilinosPartitionedFSIUtilitiesArray2D(
             self._GetEpetraCommunicator())
     else:
         return KratosTrilinos.TrilinosPartitionedFSIUtilitiesArray3D(
             self._GetEpetraCommunicator())
 def _CreatePartitionedFSIUtilities(self):
     if self._GetDomainSize() == 2:
         return KratosTrilinos.TrilinosPartitionedFSIUtilitiesArray2D(
             self._GetEpetraCommunicator())
     elif self._GetDomainSize() == 3:
         return KratosTrilinos.TrilinosPartitionedFSIUtilitiesArray3D(
             self._GetEpetraCommunicator())
     else:
         raise Exception("Domain size expected to be 2 or 3. Got " +
                         str(self._GetDomainSize()))
예제 #3
0
    def setUp(self):

        # So far, the MPI convergence accelerator tests must be run with 2 processes
        if (mpi.size != 2):
            raise Exception(
                "The MPI convergence accelerator tests must be run with 2 processes."
            )

        self.print_gid_output = False
        self.accelerator_tolerance = 1e-10
        self.accelerator_iterations = 50
        self.assert_delta = 1e-7

        self.model_part = self.ReadModelPart(
            GetPartitionedFilePath("box_fluid"))
        self.model_part.ProcessInfo.SetValue(KratosMultiphysics.DOMAIN_SIZE, 3)

        self.space = KratosTrilinos.TrilinosSparseSpace()
        self.epetra_comm = KratosTrilinos.CreateCommunicator()

        self.partitioned_utilities = KratosTrilinos.TrilinosPartitionedFSIUtilitiesArray3D(
            self.epetra_comm)
예제 #4
0
 def _create_partitioned_fsi_utilities(self):
     domain_size = self.GetFatherModelPart().ProcessInfo[
         KratosMultiphysics.DOMAIN_SIZE]
     if not self.GetFatherModelPart().IsDistributed():
         if domain_size == 2:
             if self.scalar_output:
                 return KratosFSI.PartitionedFSIUtilitiesDouble2D()
             else:
                 return KratosFSI.PartitionedFSIUtilitiesArray2D()
         elif domain_size == 3:
             if self.scalar_output:
                 return KratosFSI.PartitionedFSIUtilitiesDouble3D()
             else:
                 return KratosFSI.PartitionedFSIUtilitiesArray3D()
         else:
             raise Exception("Domain size expected to be 2 or 3. Got " +
                             str(self.domain_size))
     else:
         self._epetra_communicator = KratosTrilinos.CreateCommunicator()
         if domain_size == 2:
             if self.scalar_output:
                 return KratosTrilinos.TrilinosPartitionedFSIUtilitiesDouble2D(
                     self._epetra_communicator)
             else:
                 return KratosTrilinos.TrilinosPartitionedFSIUtilitiesArray2D(
                     self._epetra_communicator)
         elif domain_size == 3:
             if self.scalar_output:
                 return KratosTrilinos.TrilinosPartitionedFSIUtilitiesDouble3D(
                     self._epetra_communicator)
             else:
                 return KratosTrilinos.TrilinosPartitionedFSIUtilitiesArray3D(
                     self._epetra_communicator)
         else:
             raise Exception("Domain size expected to be 2 or 3. Got " +
                             str(self.domain_size))