muMECH  1.0
Classes | Functions
tests_tools.cpp File Reference
#include "tests.h"
#include "problem.h"
#include "mesh.h"
#include "homogenizationMethods.h"
#include "comparison.h"
#include "types.h"
#include "mnode.h"
#include "melement.h"
#include "vtk.h"
#include "mesoface.h"
#include "gelib.h"
#include "librw.h"
#include <algorithm>

Go to the source code of this file.

Classes

struct  Bod
 

Functions

void x2d_1I (void)
 Jedna 2D inkluze v centru SS s poloosama 1.0 a 0.5. More...
 
void x2d_2I (void)
 
void x2d_grid (void)
 
void clanek_3d_vzor (void)
 
void clanek_homog_grid (void)
 
void visualization_1I_2d (void)
 
void visualization_1I_3d (void)
 
void visualization_197I_2d3d (void)
 
void intersection_2d (void)
 
void intersection_3d (void)
 
void x2Dx3D_rotation (void)
 
void penergy_2d (void)
 u jedne inkluze bych mel vyzkouset, jestli jsou opravdu energie stejne, zda se mi ze se zahustenim site se to meni More...
 
void hrana_inkluze (void)
 Test jestli externi pole dokazou plynule prechazet i dovnit inkluze. More...
 
void Energy_x2D_1I_MMxFEM (void)
 
void ovlivneni (void)
 
void speedtest2Dx3D (void)
 Speedtest comparing 2D problem - computes only external points. More...
 
void createNodes (double a, double b, double c, double da, double db, double dc, double **&points, int &n)
 
void test3D ()
 
void modeset (Problem *p, int mode)
 
void print_graf (const char *vtkGeomFile, const char *path, const char *suff, int lc, char axe, int comp, double coordMin, double coordMax, double coordDelta, char pt_flag, double dshift, DiffTypes dt, Bod *b, bool odd)
 Tiskne grafy hodnot displacement, strain, stress na rezu ve smeru dane osy v danem rozsahu, perturbation nebo total, displacement se muze shiftnout. More...
 
void compute_and_print_reg_mesh (const char *vtkGeomFile, const char *vtkMeshFileOutPert, double x, int n, char pt, DiffTypes dt)
 
Bodread_ansys_strain_stress_plot (const char *path, int lc, char axe, int comp, double coordMin, double coordMax, bool strn, bool half, bool bod)
 Pozor, zatim asi dost predpokladam, ze je uloha 2d. More...
 
void read_ansys_displ_plot (const char *path, int lc, char axe, int comp, double coordMin, double coordMax)
 
void eqiv_gener_1x2dI_3d (const char *vtkAmndFile, double Em, double num, const double *rs, double x, double y, double E, double nu, double a1, double a2, double ea, DiffTypes dt)
 
void eqiv_gener_1x2dI_2d (const char *vtkAmndFile, double Em, double num, const double *rs, double x, double y, double E, double nu, double a1, double a2, double ea, DiffTypes dt)
 
void eqiv_gener_2x2dI_2d (const char *vtkAmndFile, double Em, double num, const double *rs, double x, double E, double nu, double a1, double a2, DiffTypes dt, int mode=0)
 
void eqiv_gener_2x2dI_3d (const char *vtkAmndFile, double Em, double num, const double *rs, double x, double E, double nu, double a1, double a2, DiffTypes dt, int mode=0)
 
void eqiv_gener_gx2dI_2d (const char *vtkAmndFile, int gx, int gy, double dx, double dy, double Em, double num, const double *rs, double E, double nu, double a1, double a2, DiffTypes dt, int mode)
 dx, dy ... roztec stredu inkluzi More...
 
void eqiv_gener_gx2dI_3d (const char *vtkAmndFile, int gx, int gy, double dx, double dy, double Em, double num, const double *rs, double E, double nu, double a1, double a2, DiffTypes dt, int mode)
 
void eqiv_gener_1x3dI (const char *vtkAmndFile, double Em, double num, const double *rs, double x, double y, double z, double E, double nu, double a1, double a2, double a3, double ea1, double ea2, double ea3, DiffTypes dt)
 
void tests_tools (void)
 
void compare_grafs (const char *name1, const char *name2)
 
void read_number_from_file (double &dx, const char *name)
 
bool compare_x (Bod const &first, Bod const &second)
 
bool compare_y (Bod const &first, Bod const &second)
 
void intersection_3d_core (double c1x, double c1y, double c1z, double a1x, double a1y, double a1z, double e1x, double e1y, double e1z, double c2x, double c2y, double c2z, double a2x, double a2y, double a2z, double e2x, double e2y, double e2z, bool expected, bool ee, const char *s)
 ee - THE XX error expected More...
 
void intersection_3d_core_6 (double cx, double cy, double cz, double a1x, double a1y, double a1z, double g1x, double g1y, double g1z, double e1x, double e1y, double e1z, double a2x, double a2y, double a2z, double g2x, double g2y, double g2z, double e2x, double e2y, double e2z)
 Dve inkluze s danym pootocenim se mohou dotykat ve vrcholech v 6-ti pozicich. More...
 
void intersection_3d_core_6x6 (double cx, double cy, double cz, double a1x, double a1y, double a1z, double g1x, double g1y, double g1z, double e1x, double e1y, double e1z, double a2x, double a2y, double a2z)
 
void intersection_3d_core_6x6x6 (double cx, double cy, double cz, double a1x, double a1y, double a1z, double a2x, double a2y, double a2z)
 
void intersection_2d_core (double c1x, double c1y, double a1x, double a1y, double e1, double c2x, double c2y, double a2x, double a2y, double e2, bool expected, const char *s)
 ee - THE XX error expected More...
 
void intersection_2d_core_4 (double cx, double cy, double a1x, double a1y, double g1x, double g1y, double e1, double a2x, double a2y, double g2x, double g2y, double e2)
 Dve inkluze s danym pootocenim se mohou dotykat ve vrcholech v 4 pozicich. More...
 

Function Documentation

void clanek_3d_vzor ( void  )
void clanek_homog_grid ( void  )
void compare_grafs ( const char *  name1,
const char *  name2 
)

Definition at line 134 of file tests_tools.cpp.

References gelibspace::areSame(), mumech::e(), errol, and gelibspace::FP_skip_line().

bool compare_x ( Bod const &  first,
Bod const &  second 
)

Definition at line 1096 of file tests_tools.cpp.

References Bod::coord.

Referenced by read_ansys_displ_plot(), and read_ansys_strain_stress_plot().

bool compare_y ( Bod const &  first,
Bod const &  second 
)

Definition at line 1097 of file tests_tools.cpp.

References Bod::coord.

Referenced by read_ansys_displ_plot(), and read_ansys_strain_stress_plot().

void compute_and_print_reg_mesh ( const char *  vtkGeomFile,
const char *  vtkMeshFileOutPert,
double  x,
int  n,
char  pt,
DiffTypes  dt 
)
void createNodes ( double  a,
double  b,
double  c,
double  da,
double  db,
double  dc,
double **&  points,
int &  n 
)

Definition at line 1541 of file tests_tools.cpp.

Referenced by test3D().

void Energy_x2D_1I_MMxFEM ( void  )
void eqiv_gener_1x2dI_2d ( const char *  vtkAmndFile,
double  Em,
double  num,
const double *  rs,
double  x,
double  y,
double  E,
double  nu,
double  a1,
double  a2,
double  ea,
DiffTypes  dt 
)
void eqiv_gener_1x2dI_3d ( const char *  vtkAmndFile,
double  Em,
double  num,
const double *  rs,
double  x,
double  y,
double  E,
double  nu,
double  a1,
double  a2,
double  ea,
DiffTypes  dt 
)
void eqiv_gener_1x3dI ( const char *  vtkAmndFile,
double  Em,
double  num,
const double *  rs,
double  x,
double  y,
double  z,
double  E,
double  nu,
double  a1,
double  a2,
double  a3,
double  ea1,
double  ea2,
double  ea3,
DiffTypes  dt 
)
void eqiv_gener_2x2dI_2d ( const char *  vtkAmndFile,
double  Em,
double  num,
const double *  rs,
double  x,
double  E,
double  nu,
double  a1,
double  a2,
DiffTypes  dt,
int  mode = 0 
)
void eqiv_gener_2x2dI_3d ( const char *  vtkAmndFile,
double  Em,
double  num,
const double *  rs,
double  x,
double  E,
double  nu,
double  a1,
double  a2,
DiffTypes  dt,
int  mode = 0 
)
void eqiv_gener_gx2dI_2d ( const char *  vtkAmndFile,
int  gx,
int  gy,
double  dx,
double  dy,
double  Em,
double  num,
const double *  rs,
double  E,
double  nu,
double  a1,
double  a2,
DiffTypes  dt,
int  mode 
)
void eqiv_gener_gx2dI_3d ( const char *  vtkAmndFile,
int  gx,
int  gy,
double  dx,
double  dy,
double  Em,
double  num,
const double *  rs,
double  E,
double  nu,
double  a1,
double  a2,
DiffTypes  dt,
int  mode 
)
void hrana_inkluze ( void  )

Test jestli externi pole dokazou plynule prechazet i dovnit inkluze.

Obcas to potrebuju, kdyz vim/potrebuji aby byl bod vne, ale numericky spadne tesne dovnitr. Pro spusteni testu musim v problem.cpp vynutit pozadavek na vnejsi polohy bodu. Hledej komentar "hrany". Byl tady problem s numerickou integraci, ale to bylo odstraneno tim ze posilam do esei_* pozadavek na polohu bodu. Tim padem i pri zaporne lambda/vnitrni bod se spocita externi integraly.

Definition at line 617 of file tests_tools.cpp.

References mumech::DT_ANALITICAL, mumech::DT_NUMERICAL, eqiv_gener_1x3dI(), and print_graf().

void intersection_2d ( void  )

Definition at line 2073 of file tests_tools.cpp.

References intersection_2d_core(), and intersection_2d_core_4().

void intersection_2d_core ( double  c1x,
double  c1y,
double  a1x,
double  a1y,
double  e1,
double  c2x,
double  c2y,
double  a2x,
double  a2y,
double  e2,
bool  expected,
const char *  s 
)
void intersection_2d_core_4 ( double  cx,
double  cy,
double  a1x,
double  a1y,
double  g1x,
double  g1y,
double  e1,
double  a2x,
double  a2y,
double  g2x,
double  g2y,
double  e2 
)

Dve inkluze s danym pootocenim se mohou dotykat ve vrcholech v 4 pozicich.

Definition at line 2046 of file tests_tools.cpp.

References mumech::e(), and intersection_2d_core().

Referenced by intersection_2d().

void intersection_3d ( void  )

Definition at line 1967 of file tests_tools.cpp.

References intersection_3d_core(), and intersection_3d_core_6x6x6().

void intersection_3d_core ( double  c1x,
double  c1y,
double  c1z,
double  a1x,
double  a1y,
double  a1z,
double  e1x,
double  e1y,
double  e1z,
double  c2x,
double  c2y,
double  c2z,
double  a2x,
double  a2y,
double  a2z,
double  e2x,
double  e2y,
double  e2z,
bool  expected,
bool  ee,
const char *  s 
)
void intersection_3d_core_6 ( double  cx,
double  cy,
double  cz,
double  a1x,
double  a1y,
double  a1z,
double  g1x,
double  g1y,
double  g1z,
double  e1x,
double  e1y,
double  e1z,
double  a2x,
double  a2y,
double  a2z,
double  g2x,
double  g2y,
double  g2z,
double  e2x,
double  e2y,
double  e2z 
)

Dve inkluze s danym pootocenim se mohou dotykat ve vrcholech v 6-ti pozicich.

Definition at line 1908 of file tests_tools.cpp.

References mumech::e(), and intersection_3d_core().

Referenced by intersection_3d_core_6x6().

void intersection_3d_core_6x6 ( double  cx,
double  cy,
double  cz,
double  a1x,
double  a1y,
double  a1z,
double  g1x,
double  g1y,
double  g1z,
double  e1x,
double  e1y,
double  e1z,
double  a2x,
double  a2y,
double  a2z 
)

Definition at line 1942 of file tests_tools.cpp.

References intersection_3d_core_6().

Referenced by intersection_3d_core_6x6x6().

void intersection_3d_core_6x6x6 ( double  cx,
double  cy,
double  cz,
double  a1x,
double  a1y,
double  a1z,
double  a2x,
double  a2y,
double  a2z 
)

Definition at line 1954 of file tests_tools.cpp.

References intersection_3d_core_6x6().

Referenced by intersection_3d().

void modeset ( Problem p,
int  mode 
)
void ovlivneni ( void  )
void penergy_2d ( void  )

u jedne inkluze bych mel vyzkouset, jestli jsou opravdu energie stejne, zda se mi ze se zahustenim site se to meni

compute energy of mumech solution

Definition at line 174 of file tests_tools.cpp.

References mumech::Comparison::give_energy_MM().

void print_graf ( const char *  vtkGeomFile,
const char *  path,
const char *  suff,
int  lc,
char  axe,
int  comp,
double  coordMin,
double  coordMax,
double  coordDelta,
char  pt_flag,
double  dshift,
DiffTypes  dt,
Bod b = NULL,
bool  odd = false 
)
void read_ansys_displ_plot ( const char *  path,
int  lc,
char  axe,
int  comp,
double  coordMin,
double  coordMax 
)
Bod * read_ansys_strain_stress_plot ( const char *  path,
int  lc,
char  axe,
int  comp,
double  coordMin,
double  coordMax,
bool  strn,
bool  half = false,
bool  bod = false 
)
void read_number_from_file ( double &  dx,
const char *  name 
)

Definition at line 271 of file tests_tools.cpp.

Referenced by x2d_2I().

void speedtest2Dx3D ( void  )
void test3D ( void  )
void tests_tools ( void  )

Definition at line 102 of file tests_tools.cpp.

References x2d_2I().

Referenced by main().

void visualization_197I_2d3d ( void  )
void visualization_1I_2d ( void  )
void visualization_1I_3d ( void  )
void x2d_1I ( void  )

Jedna 2D inkluze v centru SS s poloosama 1.0 a 0.5.

Pokud chci porovnavat s ANSYSem, coz chci, tak toto nesmim menit. Uloha pocitana 2d a 3d mumechem a ansysem. ANSYS je spocitan pro uhel 0.0 a 30.0. Pokud zde ve fci zmenim hodnotu angle, musim zmenit link v priklady_tools/x2d_1I/ANSYS/rslts_lc* A) Tisknou se grafy strain, stress a displacement slozek, muzou se volit tyto kombinace:

  • na ose x a/nebo y
  • pro 1 zadany lc nebo pro vsechny
  • 1,2 nebo 3 prvni komponenty veliciny (u displc se 3. komponenta netiskne, pac neni) Tiskne se v pravidelnych bodech definovanych v argumentu fce print_graf, nebo v bodech ansys site dane osy, kdyz pouziju Bod *b co leze z read_ansys_strain_stress_plot.

VYSLEDKY 2d, 3d a ansys davaji velmi podobne vysledky. U uhlu 30.0 a lc2 tam u 2d trochu ulitava bod na hranici inkluze. 2d a 3d davaji trochu jine vysledky, mozna je to hrubym meshovanim.

Definition at line 199 of file tests_tools.cpp.

References mumech::DT_ANALITICAL, mumech::DT_NUMERICAL, eqiv_gener_1x2dI_2d(), eqiv_gener_1x2dI_3d(), errol, print_graf(), read_ansys_displ_plot(), and read_ansys_strain_stress_plot().

void x2d_2I ( void  )
void x2d_grid ( void  )
void x2Dx3D_rotation ( void  )