~ubuntu-branches/ubuntu/saucy/libctl/saucy

« back to all changes in this revision

Viewing changes to utils/ctlgeom.h

  • Committer: Bazaar Package Importer
  • Author(s): Josselin Mouette
  • Date: 2006-05-01 20:25:01 UTC
  • mfrom: (1.1.2 upstream)
  • Revision ID: james.westby@ubuntu.com-20060501202501-lytbmb3oevyoqzxi
Tags: 3.0.1-1
* New upstream release (closes: #361676).
* Major rework of the debian/ directory. Switch to cdbs.
* Migrate Scheme files to a versioned location to allow several
  versions to be installed at once.
* Write a Makefile to put with the example.
* Update copyright, the library is now GPL.
* Use gfortran for the F77 wrappers.
* Standards-version is 3.7.0.

Show diffs side-by-side

added added

removed removed

Lines of Context:
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
3
3
 *
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
22
22
#ifndef GEOM_H
23
23
#define GEOM_H
24
24
 
25
 
#include <ctl-io.h>
 
25
#ifndef CTL_IO_H
 
26
#  include <ctlgeom-types.h>
 
27
#endif
 
28
 
 
29
#ifdef CXX_CTL_IO
 
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
 
34
#else
 
35
#define MATERIAL_TYPE material_type
 
36
#define GEOMETRIC_OBJECT geometric_object
 
37
#define GEOMETRIC_OBJECT_LIST geometric_object_list
 
38
#define LATTICE lattice
 
39
#endif
26
40
 
27
41
#ifdef __cplusplus
28
42
extern "C" {
30
44
 
31
45
/**************************************************************************/
32
46
 
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,
 
65
                                      double s[2]);
 
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,
 
71
                                        vector3 p);
 
72
GEOMETRIC_OBJECT object_of_point0(GEOMETRIC_OBJECT_LIST geometry, vector3 p,
 
73
                                   vector3 *shiftby);
 
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);
43
77
 
44
78
typedef struct {
47
81
 
48
82
typedef struct {
49
83
     geom_box box;
50
 
     geometric_object *o;
 
84
     const GEOMETRIC_OBJECT *o;
51
85
     vector3 shiftby;
 
86
     int precedence;
52
87
} geom_box_object;
53
88
 
54
89
typedef struct geom_box_tree_struct {
60
95
 
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,
 
99
                                           geom_box b0);
 
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,
 
107
                                                vector3 *shiftby,
 
108
                                                int *precedence);
 
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);
67
112
 
 
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,
 
116
                                        integer maxeval);
 
117
 
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);
70
121
 
 
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,
 
127
                           number radius2);
 
128
GEOMETRIC_OBJECT make_sphere(MATERIAL_TYPE material, vector3 center,
 
129
                             number radius);
 
130
GEOMETRIC_OBJECT make_block(MATERIAL_TYPE material, vector3 center,
 
131
                            vector3 e1, vector3 e2, vector3 e3,
 
132
                            vector3 size);
 
133
GEOMETRIC_OBJECT make_ellipsoid(MATERIAL_TYPE material, vector3 center,
 
134
                                vector3 e1, vector3 e2, vector3 e3,
 
135
                                vector3 size);
 
136
 
 
137
 
71
138
/**************************************************************************/
72
139
 
73
140
#ifdef __cplusplus