testChebBinarySymM2L.cpp 3.09 KB
Newer Older
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
// ===================================================================================
// Ce LOGICIEL "ScalFmm" est couvert par le copyright Inria 20xx-2012.
// Inria détient tous les droits de propriété sur le LOGICIEL, et souhaite que
// la communauté scientifique l'utilise afin de le tester et de l'évaluer.
// Inria donne gracieusement le droit d'utiliser ce LOGICIEL. Toute utilisation
// dans un but lucratif ou à des fins commerciales est interdite sauf autorisation
// expresse et préalable d'Inria.
// Toute utilisation hors des limites précisées ci-dessus et réalisée sans l'accord
// expresse préalable d'Inria constituerait donc le délit de contrefaçon.
// Le LOGICIEL étant un produit en cours de développement, Inria ne saurait assurer
// aucune responsabilité et notamment en aucune manière et en aucun cas, être tenu
// de répondre d'éventuels dommages directs ou indirects subits par l'utilisateur.
// Tout utilisateur du LOGICIEL s'engage à communiquer à Inria ses remarques
// relatives à l'usage du LOGICIEL
// ===================================================================================

// ==== CMAKE =====
// @FUSE_BLAS
// ================


#include <iostream>

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <stdexcept>

#include "../../Src/Utils/FGlobal.hpp"

#include "../../Src/Utils/FTic.hpp"
#include "../../Src/Utils/FMath.hpp"
33
#include "../../Src/Kernels/Interpolation/FInterpMatrixKernel.hpp"
34 35
#include "../../Src/Kernels/Chebyshev/FChebSymM2LHandler.hpp"

36
#include "../../Src/Utils/FParameterNames.hpp"
37 38 39 40 41 42 43


/**
* In this file we show how to use octree
*/
int main(int argc, char* argv[])
{ 
44 45
    FHelpDescribeAndExit(argc, argv, "Generate and store Chebyshev M2L matrices for several orders.");

46
	// typedefs   
47 48
    typedef double FReal;
	typedef FInterpMatrixKernelR<FReal> MatrixKernelClass;
49 50

	// instantiations
51
    FTic time;
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
	MatrixKernelClass MatrixKernel;

	/*
	const unsigned int ORDER = 3;
	const FReal EPSILON = FReal(1e-3);

	const int nnodes = ORDER*ORDER*ORDER;
	ComputeAndCompressAndStoreInBinaryFile<ORDER>(&MatrixKernel, EPSILON);
	
	FReal* K[343];
	int LowRank[343];
	ReadFromBinaryFile<ORDER>(EPSILON, K, LowRank);
	
	for (unsigned int idx=0; idx<343; ++idx) {
		if (K[idx] != NULL) {
			const int rank = LowRank[idx];
			std::cout << "\nM2L " << idx << " has rank " << rank << std::endl;
			for (int i=0; i<nnodes; ++i) {
				for (int r=0; r<rank; ++r)
					std::cout << K[idx][r*nnodes + i] << " ";
				std::cout << std::endl;
			}
			std::cout << std::endl;
			for (int i=0; i<nnodes; ++i) {
				for (int r=0; r<rank; ++r)
					std::cout << K[idx][rank*nnodes + r*nnodes + i] << " ";
				std::cout << std::endl;
			}
		}
	}

	for (unsigned int idx=0; idx<343; ++idx)
		if (K[idx]!=NULL) delete [] K[idx];
	*/

87 88 89 90
    ComputeAndCompressAndStoreInBinaryFile<FReal,3>(&MatrixKernel, FReal(1e-3));
    ComputeAndCompressAndStoreInBinaryFile<FReal,5>(&MatrixKernel, FReal(1e-5));
    ComputeAndCompressAndStoreInBinaryFile<FReal,7>(&MatrixKernel, FReal(1e-7));
    ComputeAndCompressAndStoreInBinaryFile<FReal,9>(&MatrixKernel, FReal(1e-9));
91 92 93 94 95 96 97


	return 0;
}


// [--END--]