1
1
/* libctl: flexible Guile-based control files for scientific software
2
* Copyright (C) 1998, 1999, 2000, 2001, 2002, Steven G. Johnson
2
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2006, Steven G. Johnson
4
4
* This library is free software; you can redistribute it and/or
5
5
* modify it under the terms of the GNU Lesser General Public
26
# include <ctlgeom-types.h>
30
#define MATERIAL_TYPE ctlio::material_type
31
#define GEOMETRIC_OBJECT ctlio::geometric_object
32
#define GEOMETRIC_OBJECT_LIST ctlio::geometric_object_list
33
#define LATTICE ctlio::lattice
35
#define MATERIAL_TYPE material_type
36
#define GEOMETRIC_OBJECT geometric_object
37
#define GEOMETRIC_OBJECT_LIST geometric_object_list
38
#define LATTICE lattice
31
45
/**************************************************************************/
33
extern void geom_fix_object(geometric_object o);
47
extern void geom_initialize(void);
48
extern void geom_fix_object(GEOMETRIC_OBJECT o);
34
49
extern void geom_fix_objects(void);
35
extern boolean point_in_objectp(vector3 p, geometric_object o);
36
extern boolean point_in_periodic_objectp(vector3 p, geometric_object o);
37
extern boolean point_in_fixed_objectp(vector3 p, geometric_object o);
38
extern boolean point_in_periodic_fixed_objectp(vector3 p, geometric_object o);
39
extern material_type material_of_point_inobject(vector3 p, boolean *inobject);
40
extern material_type material_of_point(vector3 p);
41
extern void display_geometric_object_info(int indentby, geometric_object o);
50
extern void geom_fix_objects0(GEOMETRIC_OBJECT_LIST geometry);
51
extern void geom_fix_lattice(void);
52
extern void geom_fix_lattice0(LATTICE *L);
53
extern void geom_cartesian_lattice(void);
54
extern void geom_cartesian_lattice0(LATTICE *L);
55
extern boolean point_in_objectp(vector3 p, GEOMETRIC_OBJECT o);
56
extern boolean point_in_periodic_objectp(vector3 p, GEOMETRIC_OBJECT o);
57
extern boolean point_in_fixed_objectp(vector3 p, GEOMETRIC_OBJECT o);
58
extern boolean point_in_fixed_pobjectp(vector3 p, GEOMETRIC_OBJECT *o);
59
extern boolean point_in_periodic_fixed_objectp(vector3 p, GEOMETRIC_OBJECT o);
60
extern vector3 to_geom_object_coords(vector3 p, GEOMETRIC_OBJECT o);
61
extern vector3 from_geom_object_coords(vector3 p, GEOMETRIC_OBJECT o);
62
extern vector3 normal_to_object(vector3 p, GEOMETRIC_OBJECT o);
63
extern vector3 normal_to_fixed_object(vector3 p, GEOMETRIC_OBJECT o);
64
extern int intersect_line_with_object(vector3 p, vector3 d, GEOMETRIC_OBJECT o,
66
extern MATERIAL_TYPE material_of_point_inobject(vector3 p, boolean *inobject);
67
extern MATERIAL_TYPE material_of_point_inobject0(
68
GEOMETRIC_OBJECT_LIST geometry, vector3 p, boolean *inobject);
69
extern MATERIAL_TYPE material_of_point(vector3 p);
70
extern MATERIAL_TYPE material_of_point0(GEOMETRIC_OBJECT_LIST geometry,
72
GEOMETRIC_OBJECT object_of_point0(GEOMETRIC_OBJECT_LIST geometry, vector3 p,
74
GEOMETRIC_OBJECT object_of_point(vector3 p, vector3 *shiftby);
75
vector3 shift_to_unit_cell(vector3 p);
42
76
extern matrix3x3 square_basis(matrix3x3 lattice_basis, vector3 size);
61
96
extern void destroy_geom_box_tree(geom_box_tree t);
62
97
extern geom_box_tree create_geom_box_tree(void);
63
extern material_type material_of_point_in_tree_inobject(vector3 p, geom_box_tree t, boolean *inobject);
64
extern material_type material_of_point_in_tree(vector3 p, geom_box_tree t);
98
extern geom_box_tree create_geom_box_tree0(GEOMETRIC_OBJECT_LIST geometry,
100
extern geom_box_tree restrict_geom_box_tree(geom_box_tree, const geom_box *);
101
extern geom_box_tree geom_tree_search(vector3 p, geom_box_tree t, int *oindex);
102
extern geom_box_tree geom_tree_search_next(vector3 p, geom_box_tree t, int *oindex);
103
extern MATERIAL_TYPE material_of_point_in_tree_inobject(vector3 p, geom_box_tree t, boolean *inobject);
104
extern MATERIAL_TYPE material_of_point_in_tree(vector3 p, geom_box_tree t);
105
extern MATERIAL_TYPE material_of_unshifted_point_in_tree_inobject(vector3 p, geom_box_tree t, boolean *inobject);
106
const GEOMETRIC_OBJECT *object_of_point_in_tree(vector3 p, geom_box_tree t,
109
extern vector3 to_geom_box_coords(vector3 p, geom_box_object *gbo);
65
110
extern void display_geom_box_tree(int indentby, geom_box_tree t);
66
111
extern void geom_box_tree_stats(geom_box_tree t, int *depth, int *nobjects);
113
extern number box_overlap_with_object(geom_box b, GEOMETRIC_OBJECT o, number tol, integer maxeval);
114
extern number range_overlap_with_object(vector3 low, vector3 high,
115
GEOMETRIC_OBJECT o, number tol,
68
118
extern vector3 get_grid_size(void);
119
extern vector3 get_resolution(void);
69
120
extern void get_grid_size_n(int *nx, int *ny, int *nz);
122
GEOMETRIC_OBJECT make_geometric_object(MATERIAL_TYPE material, vector3 center);
123
GEOMETRIC_OBJECT make_cylinder(MATERIAL_TYPE material, vector3 center,
124
number radius, number height, vector3 axis);
125
GEOMETRIC_OBJECT make_cone(MATERIAL_TYPE material, vector3 center,
126
number radius, number height, vector3 axis,
128
GEOMETRIC_OBJECT make_sphere(MATERIAL_TYPE material, vector3 center,
130
GEOMETRIC_OBJECT make_block(MATERIAL_TYPE material, vector3 center,
131
vector3 e1, vector3 e2, vector3 e3,
133
GEOMETRIC_OBJECT make_ellipsoid(MATERIAL_TYPE material, vector3 center,
134
vector3 e1, vector3 e2, vector3 e3,
71
138
/**************************************************************************/
73
140
#ifdef __cplusplus