34 #define VERDICT_VERSION 120 36 #define BUILD_SHARED_LIBS 37 #ifdef BUILD_SHARED_LIBS 38 # define VERDICT_SHARED_LIB 71 #define VERDICT_MANGLE 76 #define VERDICT_DBL_MIN 1.0E-30 77 #define VERDICT_DBL_MAX 1.0E+30 78 #define VERDICT_PI 3.1415926535897932384626 80 #if defined(_WIN32) || defined (__CYGWIN__) 81 # define VERDICT_ABI_IMPORT __declspec(dllimport) 82 # define VERDICT_ABI_EXPORT __declspec(dllexport) 84 # define VERDICT_ABI_IMPORT __attribute__ ((visibility("default"))) 85 # define VERDICT_ABI_EXPORT __attribute__ ((visibility("default"))) 87 # define VERDICT_ABI_IMPORT 88 # define VERDICT_ABI_EXPORT 92 # define VERDICT_EXTERN_C extern "C" 95 #if defined(VERDICT_SHARED_LIB) 96 # ifdef verdict_EXPORTS 97 # define C_FUNC_DEF VERDICT_EXTERN_C VERDICT_ABI_EXPORT 99 # define C_FUNC_DEF VERDICT_EXTERN_C VERDICT_ABI_IMPORT 102 # define C_FUNC_DEF VERDICT_EXTERN_C 388 #define V_HEX_MAX_EDGE_RATIO 1 392 #define V_HEX_TAPER 4 394 #define V_HEX_VOLUME 8 396 #define V_HEX_STRETCH 16 398 #define V_HEX_DIAGONAL 32 400 #define V_HEX_DIMENSION 64 402 #define V_HEX_ODDY 128 404 #define V_HEX_MAX_ASPECT_FROBENIUS 256 406 #define V_HEX_CONDITION 256 408 #define V_HEX_JACOBIAN 512 410 #define V_HEX_SCALED_JACOBIAN 1024 412 #define V_HEX_SHEAR 2048 414 #define V_HEX_SHAPE 4096 416 #define V_HEX_RELATIVE_SIZE_SQUARED 8192 418 #define V_HEX_SHAPE_AND_SIZE 16384 420 #define V_HEX_SHEAR_AND_SIZE 32768 422 #define V_HEX_DISTORTION 65536 424 #define V_HEX_EDGE_RATIO 131072 426 #define V_HEX_MED_ASPECT_FROBENIUS 262144 431 #define V_HEX_ALL 524287 440 #define V_HEX_TRADITIONAL \ 441 V_HEX_MAX_EDGE_RATIO + \ 449 V_HEX_SCALED_JACOBIAN + \ 455 #define V_HEX_DIAGNOSTIC V_HEX_VOLUME 462 #define V_HEX_ALGEBRAIC \ 465 V_HEX_RELATIVE_SIZE_SQUARED + \ 466 V_HEX_SHAPE_AND_SIZE + \ 470 #define V_HEX_ROBINSON \ 480 #define V_TET_RADIUS_RATIO 1 482 #define V_TET_ASPECT_BETA 2 484 #define V_TET_ASPECT_GAMMA 4 486 #define V_TET_VOLUME 8 488 #define V_TET_CONDITION 16 490 #define V_TET_JACOBIAN 32 492 #define V_TET_SCALED_JACOBIAN 64 494 #define V_TET_SHAPE 128 496 #define V_TET_RELATIVE_SIZE_SQUARED 256 498 #define V_TET_SHAPE_AND_SIZE 512 500 #define V_TET_DISTORTION 1024 502 #define V_TET_EDGE_RATIO 2048 504 #define V_TET_ASPECT_RATIO 4096 506 #define V_TET_ASPECT_FROBENIUS 8192 508 #define V_TET_MINIMUM_ANGLE 16384 510 #define V_TET_COLLAPSE_RATIO 32768 512 #define V_TET_EQUIVOLUME_SKEW 65536 514 #define V_TET_SQUISH_INDEX 131072 520 #define V_TET_ALL 262143 527 #define V_TET_TRADITIONAL V_TET_ASPECT_BETA + \ 528 V_TET_ASPECT_GAMMA + \ 531 V_TET_SCALED_JACOBIAN 536 #define V_TET_DIAGNOSTIC V_TET_VOLUME 542 #define V_TET_ALGEBRAIC V_TET_SHAPE + \ 543 V_TET_RELATIVE_SIZE_SQUARED + \ 553 #define V_PYRAMID_VOLUME 1 555 #define V_PYRAMID_ALL \ 563 #define V_WEDGE_VOLUME 1 564 #define V_WEDGE_EDGE_RATIO 2 565 #define V_WEDGE_MAX_ASPECT_FROBENIUS 4 566 #define V_WEDGE_MEAN_ASPECT_FROBENIUS 8 567 #define V_WEDGE_JACOBIAN 16 568 #define V_WEDGE_SCALED_JACOBIAN 32 569 #define V_WEDGE_DISTORTION 64 570 #define V_WEDGE_MAX_STRETCH 128 571 #define V_WEDGE_SHAPE 256 572 #define V_WEDGE_CONDITION 512 574 #define V_WEDGE_ALL \ 582 #define V_KNIFE_VOLUME 1 584 #define V_KNIFE_ALL \ 592 #define V_QUAD_MAX_EDGE_RATIO 1 594 #define V_QUAD_SKEW 2 596 #define V_QUAD_TAPER 4 598 #define V_QUAD_WARPAGE 8 600 #define V_QUAD_AREA 16 602 #define V_QUAD_STRETCH 32 604 #define V_QUAD_MINIMUM_ANGLE 64 606 #define V_QUAD_MAXIMUM_ANGLE 128 608 #define V_QUAD_ODDY 256 610 #define V_QUAD_CONDITION 512 612 #define V_QUAD_JACOBIAN 1024 614 #define V_QUAD_SCALED_JACOBIAN 2048 616 #define V_QUAD_SHEAR 4096 618 #define V_QUAD_SHAPE 8192 620 #define V_QUAD_RELATIVE_SIZE_SQUARED 16384 622 #define V_QUAD_SHAPE_AND_SIZE 32768 624 #define V_QUAD_SHEAR_AND_SIZE 65536 626 #define V_QUAD_DISTORTION 131072 628 #define V_QUAD_EDGE_RATIO 262144 630 #define V_QUAD_ASPECT_RATIO 524288 632 #define V_QUAD_RADIUS_RATIO 1048576 634 #define V_QUAD_MED_ASPECT_FROBENIUS 2097152 636 #define V_QUAD_MAX_ASPECT_FROBENIUS 4194304 638 #define V_QUAD_ALL 8388607 640 #define V_QUAD_TRADITIONAL \ 641 V_QUAD_MAX_EDGE_RATIO + \ 646 V_QUAD_MINIMUM_ANGLE + \ 647 V_QUAD_MAXIMUM_ANGLE + \ 651 V_QUAD_SCALED_JACOBIAN 653 #define V_QUAD_DIAGNOSTIC \ 656 #define V_QUAD_ALGEBRAIC \ 659 V_QUAD_RELATIVE_SIZE_SQUARED + \ 660 V_QUAD_SHAPE_AND_SIZE 662 #define V_QUAD_ROBINSON \ 663 V_QUAD_MAX_EDGE_RATIO + \ 673 #define V_TRI_ASPECT_FROBENIUS 1 677 #define V_TRI_MINIMUM_ANGLE 4 679 #define V_TRI_MAXIMUM_ANGLE 8 681 #define V_TRI_CONDITION 16 683 #define V_TRI_SCALED_JACOBIAN 32 685 #define V_TRI_SHAPE 64 687 #define V_TRI_RELATIVE_SIZE_SQUARED 128 689 #define V_TRI_SHAPE_AND_SIZE 256 691 #define V_TRI_DISTORTION 512 693 #define V_TRI_RADIUS_RATIO 1024 695 #define V_TRI_EDGE_RATIO 2048 697 #define V_TRI_ALL 4095 699 #define V_TRI_TRADITIONAL \ 700 V_TRI_ASPECT_FROBENIUS + \ 701 V_TRI_MINIMUM_ANGLE + \ 702 V_TRI_MAXIMUM_ANGLE + \ 704 V_TRI_SCALED_JACOBIAN 706 #define V_TRI_DIAGNOSTIC \ 709 #define V_TRI_ALGEBRAIC \ 711 V_TRI_SHAPE_AND_SIZE + \ 712 V_TRI_RELATIVE_SIZE_SQUARED 719 #define V_EDGE_LENGTH 1 868 unsigned int metrics_request_flag,
struct HexMetricVals *metric_vals );
872 unsigned int metrics_request_flag,
struct TetMetricVals *metric_vals );
880 unsigned int metrics_request_flag,
struct WedgeMetricVals *metric_vals );
884 unsigned int metrics_request_flag,
struct KnifeMetricVals *metric_vals );
888 unsigned int metrics_request_flag,
struct QuadMetricVals *metric_vals );
892 unsigned int metrics_request_flag,
struct TriMetricVals *metric_vals );
896 unsigned int metrics_request_flag,
struct EdgeMetricVals *metric_vals );
C_FUNC_DEF double v_knife_volume(int num_nodes, double coordinates[][3])
Calculates knife volume.
C_FUNC_DEF double v_tet_volume(int num_nodes, double coordinates[][3])
Calculates tet volume.
C_FUNC_DEF double v_tri_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates triangle metric.
A struct to hold values computed by v_tri_quality.
C_FUNC_DEF double v_quad_warpage(int num_nodes, double coordinates[][3])
Calculates quad warpage metric.
C_FUNC_DEF void v_set_tri_normal_func(ComputeNormal func)
Sets function pointer to calculate triangle normal wrt surface.
C_FUNC_DEF void v_tri_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct TriMetricVals *metric_vals)
Calculates quality metrics for triangle elements.
A struct to hold values computed by v_pyramid_quality.
C_FUNC_DEF double v_tri_distortion(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_tri_aspect_ratio(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_quad_edge_ratio(int num_nodes, double coordinates[][3])
Calculates quad edge ratio.
C_FUNC_DEF double v_quad_distortion(int num_nodes, double coordinates[][3])
Calculates quad distortion metric.
A struct to hold values computed by v_quad_quality.
C_FUNC_DEF double v_tri_maximum_angle(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_tri_shear(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_quad_oddy(int num_nodes, double coordinates[][3])
Calculates quad oddy metric.
C_FUNC_DEF void v_quad_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct QuadMetricVals *metric_vals)
Calculates quality metrics for quadralateral elements.
C_FUNC_DEF double v_hex_diagonal(int num_nodes, double coordinates[][3])
Calculates hex diagonal metric.
C_FUNC_DEF double v_tet_shape_and_size(int num_nodes, double coordinates[][3])
Calculates tet shape-size metric.
double max_aspect_frobenius
C_FUNC_DEF double v_hex_oddy(int num_nodes, double coordinates[][3])
Calculates hex oddy metric.
C_FUNC_DEF void v_hex_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct HexMetricVals *metric_vals)
Calculates quality metrics for hexahedral elements.
C_FUNC_DEF double v_tri_shape(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_hex_dimension(int num_nodes, double coordinates[][3])
Calculates hex dimension metric.
C_FUNC_DEF double v_quad_skew(int num_nodes, double coordinates[][3])
Calculates quad skew metric.
C_FUNC_DEF double v_quad_condition(int num_nodes, double coordinates[][3])
Calculates quad condition number metric.
C_FUNC_DEF double v_wedge_condition(int num_nodes, double coordinates[][3])
Calculates wedge max aspect forbenius.
C_FUNC_DEF double v_quad_shape_and_size(int num_nodes, double coordinates[][3])
Calculates quad shape-size metric.
C_FUNC_DEF double v_wedge_jacobian(int num_nodes, double coordinates[][3])
Calculates wedge jacobian metric.
C_FUNC_DEF double v_wedge_scaled_jacobian(int num_nodes, double coordinates[][3])
Calculates wedge scaled jacobian metric.
double max_aspect_frobenius
A struct to hold values computed by v_edge_quality.
C_FUNC_DEF double v_wedge_mean_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates wedge mean aspect forbenius.
C_FUNC_DEF double v_hex_condition(int num_nodes, double coordinates[][3])
Calculates hex condition metric. This is a synonym for v_hex_max_aspect_frobenius.
C_FUNC_DEF double v_quad_jacobian(int num_nodes, double coordinates[][3])
Calculates quad jacobian.
C_FUNC_DEF double v_wedge_edge_ratio(int num_nodes, double coordinates[][3])
Calculates wedge edge ratio metric.
C_FUNC_DEF void v_set_tet_size(double size)
Sets average size (volume) of tet, needed for v_tet_relative_size(...)
C_FUNC_DEF double v_tet_minimum_angle(int num_nodes, double coordinates[][3])
Calculates tet minimum dihedral angle.
C_FUNC_DEF double v_pyramid_volume(int num_nodes, double coordinates[][3])
Calculates pyramid volume.
A struct to hold values computed by v_knife_quality.
C_FUNC_DEF double v_hex_scaled_jacobian(int num_nodes, double coordinates[][3])
Calculates hex scaled jacobian metric.
double max_aspect_frobenius
C_FUNC_DEF double v_quad_stretch(int num_nodes, double coordinates[][3])
Calculates quad strech metric.
C_FUNC_DEF double v_quad_shape(int num_nodes, double coordinates[][3])
Calculates quad shape metric.
C_FUNC_DEF double v_hex_max_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates hex condition metric.
C_FUNC_DEF double v_tet_condition(int num_nodes, double coordinates[][3])
Calculates tet condition metric.
C_FUNC_DEF double v_quad_scaled_jacobian(int num_nodes, double coordinates[][3])
Calculates quad scaled jacobian.
C_FUNC_DEF double v_tri_edge_ratio(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_wedge_shape(int num_nodes, double coordinates[][3])
Calculates the wedge shape metric.
C_FUNC_DEF double v_hex_jacobian(int num_nodes, double coordinates[][3])
Calculates hex jacobian metric.
double relative_size_squared
C_FUNC_DEF double v_wedge_volume(int num_nodes, double coordinates[][3])
Calculates wedge volume.
C_FUNC_DEF double v_edge_length(int num_nodes, double coordinates[][3])
Calculates edge length.
C_FUNC_DEF double v_quad_shear_and_size(int num_nodes, double coordinates[][3])
Calculates quad shear-size metric.
double med_aspect_frobenius
C_FUNC_DEF void v_set_tri_size(double size)
Sets average size (area) of tri, needed for v_tri_relative_size(...)
C_FUNC_DEF double v_tet_aspect_beta(int num_nodes, double coordinates[][3])
Calculates the radius ratio metric of a positively oriented tet.
C_FUNC_DEF double v_tet_scaled_jacobian(int num_nodes, double coordinates[][3])
Calculates tet scaled jacobian.
C_FUNC_DEF double v_wedge_max_stretch(int num_nodes, double coordinates[][3])
Calculates the wedge stretch.
C_FUNC_DEF void v_pyramid_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct PyramidMetricVals *metric_vals)
Calculates quality metrics for pyramid elements.
C_FUNC_DEF double v_hex_stretch(int num_nodes, double coordinates[][3])
Calculates hex stretch metric.
C_FUNC_DEF void v_set_hex_size(double size)
Sets average size (volume) of hex, needed for v_hex_relative_size(...)
C_FUNC_DEF double v_tet_radius_ratio(int num_nodes, double coordinates[][3])
Calculates tet radius ratio metric.
C_FUNC_DEF double v_hex_edge_ratio(int num_nodes, double coordinates[][3])
Calculates hex edge ratio metric.
C_FUNC_DEF double v_hex_shear(int num_nodes, double coordinates[][3])
Calculates hex shear metric.
C_FUNC_DEF double v_hex_skew(int num_nodes, double coordinates[][3])
Calculates hex skew metric.
double relative_size_squared
C_FUNC_DEF double v_quad_area(int num_nodes, double coordinates[][3])
Calculates quad area.
C_FUNC_DEF double v_hex_distortion(int num_nodes, double coordinates[][3])
Calculates hex distortion metric.
double med_aspect_frobenius
C_FUNC_DEF double v_hex_volume(int num_nodes, double coordinates[][3])
Calculates hex volume.
C_FUNC_DEF double v_tet_aspect_gamma(int num_nodes, double coordinates[][3])
Calculates tet aspect gamma metric.
C_FUNC_DEF double v_quad_maximum_angle(int num_nodes, double coordinates[][3])
Calculates quad's largest angle.
C_FUNC_DEF double v_quad_minimum_angle(int num_nodes, double coordinates[][3])
Calculates quad's smallest angle.
A struct to hold values computed by v_tet_quality.
C_FUNC_DEF double v_quad_radius_ratio(int num_nodes, double coordinates[][3])
Calculates quad radius ratio.
A struct to hold values computed by v_wedge_quality.
C_FUNC_DEF double v_tri_minimum_angle(int num_nodes, double coordinates[][3])
Calculates triangle metric.
double relative_size_squared
C_FUNC_DEF double v_quad_aspect_ratio(int num_nodes, double coordinates[][3])
Calculates quad aspect ratio.
A struct to hold values computed by v_hex_quality.
C_FUNC_DEF double v_quad_taper(int num_nodes, double coordinates[][3])
Calculates quad taper metric.
C_FUNC_DEF double v_quad_relative_size_squared(int num_nodes, double coordinates[][3])
Calculates quad relative size metric.
C_FUNC_DEF double v_quad_shear(int num_nodes, double coordinates[][3])
Calculates quad shear metric.
C_FUNC_DEF void v_tet_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct TetMetricVals *metric_vals)
Calculates quality metrics for tetrahedral elements.
C_FUNC_DEF double v_tet_shape(int num_nodes, double coordinates[][3])
Calculates tet shape metric.
C_FUNC_DEF double v_tet_edge_ratio(int num_nodes, double coordinates[][3])
Calculates tet edge ratio metric.
C_FUNC_DEF void v_wedge_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct WedgeMetricVals *metric_vals)
Calculates quality metrics for wedge elements.
C_FUNC_DEF void v_set_quad_size(double size)
Sets average size (area) of quad, needed for v_quad_relative_size(...)
C_FUNC_DEF double v_hex_shape_and_size(int num_nodes, double coordinates[][3])
Calculates hex shape-size metric.
C_FUNC_DEF double v_hex_relative_size_squared(int num_nodes, double coordinates[][3])
Calculates hex relative size metric.
C_FUNC_DEF double v_tri_shape_and_size(int num_nodes, double coordinates[][3])
Calculates triangle metric.
double(* VerdictFunction)(int, double[][3])
double mean_aspect_frobenius
C_FUNC_DEF double v_quad_max_edge_ratio(int num_nodes, double coordinates[][3])
Calculates quad maximum of edge ratio.
C_FUNC_DEF double v_tet_relative_size_squared(int num_nodes, double coordinates[][3])
Calculates tet relative size metric.
C_FUNC_DEF double v_tet_distortion(int num_nodes, double coordinates[][3])
Calculates tet distortion metric.
double relative_size_squared
C_FUNC_DEF double v_hex_med_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates hex condition metric.
C_FUNC_DEF double v_tet_aspect_ratio(int num_nodes, double coordinates[][3])
Calculates tet aspect ratio metric.
C_FUNC_DEF double v_tri_area(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_wedge_distortion(int num_nodes, double coordinates[][3])
Calculates wedge distortion metric.
C_FUNC_DEF double v_tri_radius_ratio(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_hex_shear_and_size(int num_nodes, double coordinates[][3])
Calculates hex shear-size metric.
C_FUNC_DEF double v_hex_max_edge_ratio(int num_nodes, double coordinates[][3])
Calculates hex maximum of edge ratio.
C_FUNC_DEF double v_tet_jacobian(int num_nodes, double coordinates[][3])
Calculates tet jacobian.
C_FUNC_DEF double v_quad_med_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates quad average Frobenius aspect.
C_FUNC_DEF double v_tri_scaled_jacobian(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_hex_shape(int num_nodes, double coordinates[][3])
Calculates hex shape metric.
C_FUNC_DEF double v_hex_taper(int num_nodes, double coordinates[][3])
Calculates hex taper metric.
C_FUNC_DEF double v_tri_condition(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_tri_relative_size_squared(int num_nodes, double coordinates[][3])
Calculates triangle metric.
C_FUNC_DEF double v_quad_max_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates quad maximum Frobenius aspect.
C_FUNC_DEF double v_tet_collapse_ratio(int num_nodes, double coordinates[][3])
Calculates tet collapse ratio metric.
C_FUNC_DEF void v_edge_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct EdgeMetricVals *metric_vals)
Calculates quality metrics for edge elements.
C_FUNC_DEF void v_knife_quality(int num_nodes, double coordinates[][3], unsigned int metrics_request_flag, struct KnifeMetricVals *metric_vals)
Calculates quality metrics for knife elements.
C_FUNC_DEF double v_wedge_max_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates wedge max aspect forbenius.
int(* ComputeNormal)(double point[3], double normal[3])
C_FUNC_DEF double v_tet_aspect_frobenius(int num_nodes, double coordinates[][3])
Calculates tet aspect frobenius metric.