# 1 "eval_sec-slim.c"

 





 







 
 





 

















 



# 1 "/usr/include/stdio.h" 1 3
 



















 







# 1 "/usr/include/libio.h" 1 3
 























 



# 1 "/usr/include/features.h" 1 3
 





















 















































 













 





 



 







 
# 117 "/usr/include/features.h" 3


 









 



















































 








 












 

# 1 "/usr/include/sys/cdefs.h" 1 3
 




















# 1 "/usr/include/features.h" 1 3
 

















# 222 "/usr/include/features.h" 3

# 22 "/usr/include/sys/cdefs.h" 2 3


 







# 54 "/usr/include/sys/cdefs.h" 3


 







 



# 86 "/usr/include/sys/cdefs.h" 3



 








 







# 205 "/usr/include/features.h" 2 3



 

 








# 1 "/usr/include/gnu/stubs.h" 1 3
 














# 219 "/usr/include/features.h" 2 3




# 29 "/usr/include/libio.h" 2 3


# 1 "/usr/include/_G_config.h" 1 3
 





 

# 1 "/usr/include/gnu/types.h" 1 3
 






















 
typedef unsigned char __u_char;
typedef unsigned short __u_short;
typedef unsigned int __u_int;
typedef unsigned long __u_long;

typedef unsigned long long int __u_quad_t;
typedef long long int __quad_t;
# 41 "/usr/include/gnu/types.h" 3

typedef __quad_t *__qaddr_t;

typedef __u_long __dev_t;		 
typedef __u_int __uid_t;		 
typedef __u_int __gid_t;		 
typedef __u_int __ino_t;		 
typedef __u_int __mode_t;		 
typedef __u_int __nlink_t; 		 
typedef long int __off_t;		 
typedef __quad_t __loff_t;		 
typedef int __pid_t;			 
typedef long int __ssize_t;		 

typedef struct
  {
    int __val[2];
  } __fsid_t;				 

 
typedef int __daddr_t;			 
typedef char *__caddr_t;
typedef long int __time_t;
typedef long int __swblk_t;		 

typedef long int __clock_t;

 
typedef unsigned long int __fd_mask;

 




 


 




 
typedef struct
  {
     
    __fd_mask fds_bits[1024  / (8 * sizeof (__fd_mask)) ];
  } __fd_set;


typedef int __key_t;

typedef int __ipc_pid_t;


# 9 "/usr/include/_G_config.h" 2 3




# 1 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stddef.h" 1 3






 


# 19 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stddef.h" 3



 


 





 


# 61 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stddef.h" 3


 





 


















 





 

 

# 131 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stddef.h" 3


 

 


































typedef long unsigned int size_t;






















 




 

# 271 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stddef.h" 3









typedef unsigned int  wint_t;




 

 

# 317 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stddef.h" 3




 





















# 13 "/usr/include/_G_config.h" 2 3

















typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));




 










 




 














# 31 "/usr/include/libio.h" 2 3














 

# 1 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stdarg.h" 1 3
 


































# 1 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/va-alpha.h" 1 3
 

 




 





 





typedef struct {
  char *__base;			 
  int __offset;			 
} __gnuc_va_list;




 

# 130 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/va-alpha.h" 3


# 36 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stdarg.h" 2 3

# 126 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stdarg.h" 3









# 202 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/stdarg.h" 3




# 47 "/usr/include/libio.h" 2 3







# 64 "/usr/include/libio.h" 3


 


















# 96 "/usr/include/libio.h" 3











 
























 



















struct _IO_jump_t;  struct _IO_FILE;

 



typedef void _IO_lock_t;



 

struct _IO_marker {
  struct _IO_marker *_next;
  struct _IO_FILE *_sbuf;
   

   
  int _pos;
# 180 "/usr/include/libio.h" 3

};

struct _IO_FILE {
  int _flags;		 


   
   
  char* _IO_read_ptr;	 
  char* _IO_read_end;	 
  char* _IO_read_base;	 
  char* _IO_write_base;	 
  char* _IO_write_ptr;	 
  char* _IO_write_end;	 
  char* _IO_buf_base;	 
  char* _IO_buf_end;	 
   
  char *_IO_save_base;  
  char *_IO_backup_base;   
  char *_IO_save_end;  

  struct _IO_marker *_markers;

  struct _IO_FILE *_chain;

  int _fileno;
  int _blksize;
  __off_t   _offset;


   
  unsigned short _cur_column;
  char _unused;
  char _shortbuf[1];

   

  _IO_lock_t *_lock;
};


typedef struct _IO_FILE _IO_FILE;


struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_stdin_, _IO_stdout_, _IO_stderr_;





 
typedef struct
{
  __ssize_t   (*read)  (struct _IO_FILE *, void *, __ssize_t  )  ;
  __ssize_t   (*write)  (struct _IO_FILE *, const void *, __ssize_t  )  ;
  __off_t   (*seek)  (struct _IO_FILE *, __off_t  , int)  ;
  int (*close)  (struct _IO_FILE *)  ;
} _IO_cookie_io_functions_t;

 
struct _IO_cookie_file {
  struct _IO_FILE file;
  const void *vtable;
  void *cookie;
  _IO_cookie_io_functions_t io_functions;
};






extern int __underflow  (_IO_FILE*)  ;
extern int __uflow  (_IO_FILE*)  ;
extern int __overflow  (_IO_FILE*, int)  ;

















extern int _IO_getc  (_IO_FILE *__fp)  ;
extern int _IO_putc  (int __c, _IO_FILE *__fp)  ;
extern int _IO_feof  (_IO_FILE *__fp)  ;
extern int _IO_ferror  (_IO_FILE *__fp)  ;

extern int _IO_peekc_locked  (_IO_FILE *__fp)  ;

 



extern void _IO_flockfile  (_IO_FILE *)  ;
extern void _IO_funlockfile  (_IO_FILE *)  ;
extern int _IO_ftrylockfile  (_IO_FILE *)  ;









 
















extern int _IO_vfscanf  (_IO_FILE*, const char*, __gnuc_va_list , int*)  ;
extern int _IO_vfprintf  (_IO_FILE*, const char*, __gnuc_va_list )  ;
extern __ssize_t   _IO_padn  (_IO_FILE *, int, __ssize_t  )  ;
extern size_t   _IO_sgetn  (_IO_FILE *, void*, size_t  )  ;

extern __off_t   _IO_seekoff  (_IO_FILE*, __off_t  , int, int)  ;
extern __off_t   _IO_seekpos  (_IO_FILE*, __off_t  , int)  ;

extern void _IO_free_backup_area  (_IO_FILE*)  ;






# 29 "/usr/include/stdio.h" 2 3

























  
# 69 "/usr/include/stdio.h" 3


typedef struct _IO_FILE FILE;
typedef __off_t   fpos_t;

# 1 "/usr/include/stdio_lim.h" 1 3

















# 74 "/usr/include/stdio.h" 2 3



 



 
extern FILE *stdin, *stdout, *stderr;  

















extern void clearerr  (FILE*)  ;
extern int fclose  (FILE*)  ;
extern int feof  (FILE*)  ;
extern int ferror  (FILE*)  ;
extern int fflush  (FILE*)  ;
extern int fgetc  (FILE *)  ;
extern int fgetpos  (FILE* fp, fpos_t *__pos)  ;
extern char* fgets  (char*, int, FILE*)  ;
extern FILE* fopen  (__const char*, __const char*)  ;
extern FILE* fopencookie  (void *__cookie, __const char *__mode,
			       _IO_cookie_io_functions_t __io_functions)  ;
extern int fprintf  (FILE*, __const char* __format, ...)  ;
extern int fputc  (int, FILE*)  ;
extern int fputs  (__const char *__str, FILE *__fp)  ;
extern size_t fread  (void*, size_t, size_t, FILE*)  ;
extern FILE* freopen  (__const char*, __const char*, FILE*)  ;
extern int fscanf  (FILE *__fp, __const char* __format, ...)  ;
extern int fseek  (FILE* __fp, long int __offset, int __whence)  ;
extern int fsetpos  (FILE* __fp, __const fpos_t *__pos)  ;
extern long int ftell  (FILE* __fp)  ;
extern size_t fwrite  (__const void*, size_t, size_t, FILE*)  ;
extern int getc  (FILE *)  ;
extern int getchar  (void)  ;
extern char* gets  (char*)  ;
extern void perror  (__const char *)  ;
extern int printf  (__const char* __format, ...)  ;
extern int putc  (int, FILE *)  ;
extern int putchar  (int)  ;
extern int puts  (__const char *__str)  ;
extern int remove  (__const char*)  ;
extern int rename  (__const char* __old, __const char* __new)  ;
extern void rewind  (FILE*)  ;
extern int scanf  (__const char* format, ...)  ;
extern void setbuf  (FILE*, char*)  ;
extern void setlinebuf  (FILE*)  ;
extern void setbuffer  (FILE*, char*, int)  ;
extern int setvbuf  (FILE*, char*, int __mode, size_t __size)  ;
extern int sprintf  (char*, __const char* __format, ...)  ;
extern int sscanf  (__const char* string, __const char* __format, ...)  ;
extern FILE* tmpfile  (void)  ;
extern char* tmpnam  (char*)  ;

extern char* tmpnam_r  (char*)  ;


extern char *tempnam  (__const char *__dir, __const char *__pfx)  ;

extern char *__stdio_gen_tempname  (char *__buf, size_t bufsize,
					__const char *dir, __const char *pfx,
					int dir_search, size_t *lenptr,
					FILE **streamptr)  ;
extern int ungetc  (int c, FILE* fp)  ;
extern int vfprintf  (FILE *fp, char __const *fmt0, __gnuc_va_list )  ;
extern int vprintf  (char __const *fmt, __gnuc_va_list )  ;
extern int vsprintf  (char* string, __const char* format, __gnuc_va_list )  ;
extern void __libc_fatal  (__const char *__message)  
     __attribute__ ((__noreturn__));


extern int dprintf  (int, __const char *, ...)  ;
extern int vdprintf  (int, __const char *, __gnuc_va_list )  ;
extern int vfscanf  (FILE*, __const char *, __gnuc_va_list )  ;
extern int __vfscanf  (FILE*, __const char *, __gnuc_va_list )  ;
extern int vscanf  (__const char *, __gnuc_va_list )  ;
extern int vsscanf  (__const char *, __const char *, __gnuc_va_list )  ;
extern int __vsscanf  (__const char *, __const char *, __gnuc_va_list )  ;


# 177 "/usr/include/stdio.h" 3



extern FILE *fdopen  (int, __const char *)  ;
extern int fileno  (FILE*)  ;
extern FILE* popen  (__const char*, __const char*)  ;
extern int pclose  (FILE*)  ;




 
extern char *ctermid  (char *__buf)  ;

 
extern char *cuserid  (char * __buf)  ;



extern int snprintf  (char *, size_t, __const char *, ...)  ;
extern int __snprintf  (char *, size_t, __const char *, ...)  ;
extern int vsnprintf  (char *, size_t, __const char *, __gnuc_va_list )  ;
extern int __vsnprintf  (char *, size_t, __const char *, __gnuc_va_list )  ;


# 214 "/usr/include/stdio.h" 3


extern int __underflow  (struct _IO_FILE*)  ;
extern int __overflow  (struct _IO_FILE*, int)  ;


extern int sys_nerr;
extern const char *const sys_errlist[];






 

extern void clearerr_locked  (FILE *)  ;
extern void clearerr_unlocked  (FILE *)  ;
extern int feof_locked  (FILE *)  ;
extern int feof_unlocked  (FILE *)  ;
extern int ferror_locked  (FILE*)  ;
extern int ferror_unlocked  (FILE*)  ;
extern int fileno_locked  (FILE *)  ;
extern int fileno_unlocked  (FILE *)  ;
extern int fclose_unlocked  (FILE *)  ;
extern int fflush_locked  (FILE *)  ;
extern int fflush_unlocked  (FILE *)  ;
extern size_t fread_unlocked  (void *, size_t, size_t, FILE *)  ;
extern size_t fwrite_unlocked  (const void *, size_t, size_t, FILE *)  ;

extern int fputc_locked  (int, FILE*)  ;
extern int fputc_unlocked  (int, FILE*)  ;
extern int getc_locked  (FILE *)  ;
extern int getchar_locked  (void)  ;
extern int putc_locked  (int, FILE *)  ;
extern int putchar_locked  (int)  ;









 
extern void flockfile  (FILE *)  ;
extern void funlockfile  (FILE *)  ;
extern int ftrylockfile  (FILE *)  ;

extern int getc_unlocked  (FILE *)  ;
extern int getchar_unlocked  (void)  ;
extern int putc_unlocked  (int, FILE *)  ;
extern int putchar_unlocked  (int)  ;






















# 45 "eval_sec-slim.c" 2

# 1 "/usr/include/setjmp.h" 1 3
 

















 








 

 
# 1 "/usr/include/jmp_buf.h" 1 3
 


















 




 














































typedef long int __jmp_buf[17];

# 31 "/usr/include/setjmp.h" 2 3

# 1 "/usr/include/sigset.h" 1 3
 





















typedef int __sig_atomic_t;

 


typedef struct
  {
    unsigned long int __val[(1024 / (8 * sizeof (unsigned long int))) ];
  } __sigset_t;




 





# 123 "/usr/include/sigset.h" 3

# 32 "/usr/include/setjmp.h" 2 3


 
typedef struct __jmp_buf_tag	 
  {
     


    __jmp_buf __jmpbuf;		 
    int __mask_was_saved;	 
    __sigset_t __saved_mask;	 
  } jmp_buf[1];


 


extern int __sigsetjmp  (jmp_buf __env, int __savemask)  ;


 










 





 

extern void longjmp  (jmp_buf __env, int __val)  
     __attribute__ ((__noreturn__));

 


extern void _longjmp  (jmp_buf __env, int __val)  
     __attribute__ ((__noreturn__));


 
extern void __longjmp  (__jmp_buf __env, int __val)  
     __attribute__ ((__noreturn__));

 



extern int __sigjmp_save  (jmp_buf __env, int __savemask)  ;



 


typedef jmp_buf sigjmp_buf;

 



 



extern void siglongjmp  (sigjmp_buf __env, int __val)  
     __attribute__ ((__noreturn__));


 


# 46 "eval_sec-slim.c" 2

 

 




typedef int DY_OFFSET ;


 







# 79 "eval_sec-slim.c"






 






 





 










 




 
 

 

 

 


 
 
 
 
 

extern double  dip[3][6 ][2];

 


 

 





 














 
















 






# 196 "eval_sec-slim.c"


 





 






 


 


 


     
typedef unsigned long
     element_id, vertex_id, edge_id, facet_id, body_id, facetedge_id; 

 







# 257 "eval_sec-slim.c"


 













typedef int ORDTYPE;                 

# 294 "eval_sec-slim.c"


typedef struct element *INDIRECT_TYPE; 
extern struct blocklist_struct
    { struct element *blockptr;  
      int start_ord;  
      int count;     
    } *blocklist[5 ];
extern int blockcount[5 ];   
extern int blockmax[5 ];   


 
extern INDIRECT_TYPE *ibase[5 ];
extern int ialloc[5 ];  
extern INDIRECT_TYPE *vibase;
extern INDIRECT_TYPE *eibase;
extern INDIRECT_TYPE *fibase;
extern INDIRECT_TYPE *bibase;
extern INDIRECT_TYPE *feibase;

 

 






# 335 "eval_sec-slim.c"






 







 



















 
 




 








 



struct extra { char name[31 +1];
               int type;    
               int offset;  
               int dim;     
               int flags;   
             };
 







extern char *attr_type_name[6 ];
extern int attr_type_size[6 ];

 


 


struct skeleton {
    int             type;      
    int             dimension;  
    int            ctrlpts;    
    char           *base;      
    INDIRECT_TYPE  *ibase;     
    long            maxcount;  
    element_id      free;      
    element_id      used;      
    element_id      last;      
    element_id      discard;   
    long            count;     
    ORDTYPE         max_ord;   
    int             extreme[4 +1];  
    struct extra    extras[20 ];  
    char           *extra_space;       
    int             extra_size;        
    int             extra_count;       
  } ;

 





typedef int MAP;  
typedef long int ATTR;    
typedef short int tagtype;          
typedef short ETYPE;                 
typedef long int WRAPTYPE;          

typedef int NTYPE;  

     





 






struct element {
  element_id   forechain; element_id   backchain; ATTR         attr; element_id   self_id;  int          original; unsigned short  qflags; unsigned short  method_count; 
  };

 





 




struct facetedge
  { 
    element_id   forechain; element_id   backchain; ATTR         attr; element_id   self_id; 
    edge_id      fe_edge_id;   
    facet_id     fe_facet_id;  
    facetedge_id nextedge[2];   
    facetedge_id nextfacet[2];   
  };

 
 




struct vertex
  { 
    element_id   forechain; element_id   backchain; ATTR         attr; element_id   self_id;  int          original; unsigned short  qflags; unsigned short  method_count; 
    double  star;          
    edge_id e_id;   
                    
    int valence;         
  };

 
 








 



  
struct edge
  { 
    element_id   forechain; element_id   backchain; ATTR         attr; element_id   self_id;  int          original; unsigned short  qflags; unsigned short  method_count; 
    facetedge_id fe_id;      
    edge_id next_vedge[2];     
    double  density;        
    double  length;           
    double  star;             
    short color;           
  };

 
 









 




struct facet
  { 
    element_id   forechain; element_id   backchain; ATTR         attr; element_id   self_id;  int          original; unsigned short  qflags; unsigned short  method_count; 
    facetedge_id fe_id;   
    double         density;       
    double    area;               
    short color;               
    short backcolor;           
};
 












 




struct body
  { 
    element_id   forechain; element_id   backchain; ATTR         attr; element_id   self_id;  int          original; unsigned short  qflags; unsigned short  method_count; 
    double  fixvol;      
    double  volume;      
    double  oldvolume;   
    double  pressure;    
    facetedge_id fe_id;   
    double  volconst;    
    double  density;     
    int  volquant;   
    int  volmethpos;  
    int  volmethneg;  
    short phase;                 
  }; 

 





 








 
struct boundary
  {
    ATTR attr;              
    int pcount;            
    int num;               
    struct expnode *coordf[4 ];    
    struct expnode *envect[4 ];   
    struct expnode *convect[4 ];  
    int compcount;       
    int    energy_method;    
    int    content_method_1;    
    int    content_method_2;    
  };


 

struct constraint
  {
    ATTR attr;              
    struct expnode *formula;    
    int compcount;       
    struct expnode *envect[(4 *(4 -1)/2) ];  
    struct expnode *convect[(4 *(4 -1)/2) ];  
    MAP    quantity_map;      
    struct expnode *quanvect[32 ][(4 *(4 -1)/2) ];
    int    energy_method;    
    int    content_method_1;    
    int    content_method_2;    
  };

 
struct surf_energy
  {
    ATTR attr;              
    struct expnode *envect[4 ];  
  };

 
struct quantity
  {
    ATTR attr;       
    struct expnode *quanvect[4 ];  
    double   value;     
    double   target;    
    double   pressure;   
  };


 










extern element_id
  NULLVERTEX,
  NULLEDGE,
  NULLFACET,
  NULLBODY,
  NULLFACETEDGE;

 

 
typedef struct volgrad 
  {
     body_id   b_id;    
     struct volgrad  *chain;   
     double  grad[4 ];         
     double  normal[4 ];       
     double  velocity[4 ];     
  } volgrad;

extern volgrad *vgradbase;    
extern volgrad **vgptrbase;    
extern int      vgradtop;     
extern long     vgradmax;     

 
























 








 
 
















 












 








 























































 
typedef unsigned char conmap_t;   
 

 

 

 

 


extern conmap_t nullcon[2];   































































# 902 "eval_sec-slim.c"


 





































 






























 






 









 
extern int broken_pipe_flag;  
extern int match_id_flag;  
extern char *cmdfilename;  
extern char *current_prompt;  

extern double  brightness;  
extern int markedgedrawflag;  

extern char loadfilename[200];  
extern jmp_buf loadjumpbuf;   
extern jmp_buf graphjumpbuf;   
extern unsigned long draw_thread_id;  


extern int optparamcount;   
struct optparam {
 int  pnum;  
 double  grad;  
 double  velocity;   
 double  cg;   
 double  old_value;   
 double  oldgrad;   
 int  rownum;   
 };
extern struct optparam optparam[100 ];
extern double  **optparam_congrads;   


 


extern int volgrads_every_flag;  

extern int zener_drag_flag;  

extern int backcull_flag;   
extern int setting_backcull; 


extern double  **vgev;   
extern double  **vgef;   

 
extern int keep_macros_flag;  

struct macro { char name[30 ];
                    int  offset;     
                    int  subsize;    
                  };
extern struct macro  *macros;   
extern int macro_count;   
extern char  *macro_subs;   

extern int facet_general_flag;
extern double factorial[20];
extern int everything_quantities_flag;   
extern int show_all_quantities;   
extern int random_seed;   
extern int option_q;   

extern char *VERSION;
extern char *evolver_version;   
extern char needed_version[30];

extern char *typenames[5 ];

 


 




































 



extern char *dymem;  
extern int  dymemsize;  
extern struct constraint null_constraint;  



extern char *areaname;   
extern int read_command_flag;   
extern int verb_flag;    
extern int cond_expr_flag;  
extern int exit_after_error;   
extern int exit_after_warning;   
extern int change_flag;   
extern int assigntype;   
extern char *cmdptr;    
extern int logfile_flag;  
extern char logfilename[200];
extern FILE *logfilefd;

struct vvvv { element_id id;   
              int vord[3];     
             };
extern int gocount;          
extern int go_display_flag;     
extern int box_flag;   
extern int quiet_flag;  
extern int quiet_go_flag;  
extern int shading_flag;   
extern int color_flag;    
extern int background_color;   
extern int geomview_bug_flag;  
extern int gv_binary_flag;   
extern int gv_pipe[2];  
extern int pickvnum,pickenum,pickfnum,pickbnum;  
extern int new_vertex_id,new_edge_id,new_facet_id,new_body_id;  
extern int gv_vect_start;  
 



extern int parallel_update_flag[5 ];  
extern long global_timestamp;   
extern long web_timestamp;  
extern long graph_timestamp;   
extern long top_timestamp;    
extern long vedge_timestamp;  
extern long vfacet_timestamp;  
extern long bfacet_timestamp;  
extern long volume_timestamp;  
extern long reset_timestamp;   
extern int ackerman_flag;   
extern int labelflag;  
extern int gridflag;   
extern int ps_colorflag;  
extern int crossingflag;  
extern char ps_file_name[1000];  



extern vertex_id *vpicklist;  
extern facet_id *fpicklist;



extern element_id junk;  

extern element_id xx_id;   
extern element_id x1_id,x2_id,x3_id,x4_id,x5_id,x6_id,x7_id,x8_id,x9_id;
extern element_id xa_id,xb_id,xc_id,xd_id,xe_id,xf_id,xg_id,xh_id;
 


 
struct expnode { 
                  struct treenode *start;   
                  struct treenode *root;   
                  int flag;    
               };

 

struct dstack { double  value, deriv[2* 4 ];
                  double  second[2* 4 ][2* 4 ]; };

 
extern struct expnode single_redefine[128];

 

typedef void (*dll_func_type)  (int , double *, struct dstack *)  ;
struct dll { char *name;   
             void *handle;     
             } ;
extern   struct dll dll_list[5 ];



             
 

struct global
  { char name[31  + 1];   
    union { double  real;
            char *string;
            struct expnode proc;
            struct { double  *values;
                     char *value_file;
                   } file;
            int quant;   
            int meth_inst;  
            dll_func_type funcptr;  
          } value;
    double  delta;  
    int  flags;     
    int  proc_timestamp;  
  };


extern struct global *Globals;  
extern int proc_timestamp;  
extern int old_global_count;  
extern int perm_flag;   
extern int reading_comp_quant_flag;  
extern int cur_quant;   
extern int quantities_only_flag;  
extern int gravity_quantity_num;   
extern int gap_quantity_num;   
extern int default_area_quant_num;  
extern int rotorder_var;  

 



















extern struct expnode torus_period_expr[4 ][4 ];
extern struct expnode ***view_transform_gen_expr;

 



 




extern int torus_display_mode;   
 





extern int read_depth,include_depth;
extern char datafilename[60 ];   
extern char filename[60 ];   
extern FILE *commandfd;   
extern FILE *logfd;   
extern struct cmdfile { 
         FILE *fd;  
         char filename[60 ];  
         int line;    
         int datafile_flag;   
       } cmdfile_stack[10 ],datafile_stack[10 ];
extern int datafile_flag;   

extern int lists_flag;   




extern int const_expr_flag;   

extern int boundary_expr_flag;  
extern int reading_elements_flag;  

extern FILE *outfd;     
extern int check_increase_flag;   
extern int estimate_flag;    
extern int autorecalc_flag;  
extern int autopop_flag;     
extern int autochop_flag;     
extern double  autochop_size;   
extern int autopop_count;   
extern int autochop_count;   
extern int parens;           
extern int brace_depth;           
extern int in_quote;        
extern int effective_area_flag;  
extern int old_area_flag;     
extern int runge_kutta_flag;  
extern double  total_time;      
extern double  star_fraction;   
extern int area_fixed_flag;    
extern double  area_fixed_target;   
extern double  area_fixed_pressure;  

extern int post_project_flag;     
extern struct expnode mobility_formula;
extern int mobility_flag;  
extern struct expnode mobility_tensor[4 ][4 ];
extern int mobility_tensor_flag;  
extern int check_pinning_flag;   
extern int nprocs;     
extern int procs_requested;  
extern double  proc_total_area[1 ];  
extern int web_checksum;  
extern int dymem_checksum;  
extern int comp_quant_vertex;  
extern int comp_quant_type;  

extern double  *f_sums;   

extern char yytext[];
extern int yydebug;   
extern int help_flag;  
extern int memdebug;   
extern int itdebug;   
extern int tok;
extern int int_val;
extern double  real_val;
extern int coord_num;
extern char yytext[];
extern char idname[35];  
extern char set_extra_name[100];  
extern int line_no;


extern char *history_space;
extern int  history_number;    
extern int history_count;   
extern int  history_list[100 ];

extern char fulltext[2000 +5];  
extern int  fulltextsize;            
extern int yylval;   
extern int aggrtype;   
extern int aggregate_depth;  
extern int attr_kind;  
extern char *default_name;  
extern char last_name[50];  


 

struct sym {
   char name[31 +1];
   int  type;  
   union { int intval;
         double  realval;
         element_id idval;
         char *stringval;
          } value;
  };


extern struct sym *elsym;   
extern struct sym *yysym;   
extern struct sym symtable[];    

 
extern int sqcurve_ignore_constr;  
extern int square_curvature_flag;   
extern int square_curvature_param;   
extern int mean_curvature_param;    
extern int mean_curv_int_quantity_num;    
extern int sq_mean_curv_quantity_num;  
extern int kusner_flag;    
extern int assume_oriented_flag;  
extern int boundary_curvature_flag;  
extern int conf_edge_curv_flag;  
extern int sqgauss_flag;   
extern int sqgauss_param;    
extern int       normal_sq_mean_curvature_mi;
extern int       eff_area_sq_mean_curvature_mi;
extern int       sq_mean_curvature_mi;
extern int       mix_sq_mean_curvature_mi;
extern int  star_normal_sq_mean_curvature_mi;
extern int  star_eff_area_sq_mean_curvature_mi;
extern int  star_sq_mean_curvature_mi;
extern double  target_length;   
extern int approx_curve_flag;   
extern int mean_curv_int_flag;   
extern int normal_curvature_flag;  
extern int div_normal_curvature_flag;  
 



extern int self_similar_flag;

 
extern int normal_motion_flag;
typedef double  pt_type[4 ];
extern pt_type *vertex_normals;   

 
extern int unit_normal_flag;
extern double  deturck_factor;   

extern double  **identmat;   

 
extern double  homothety_target;

extern char *msg;      
extern int msgmax;     
extern char errmsg[200];   
extern int  parse_error_flag;   
extern int parse_errors;     
extern int  recovery_flag;      
extern jmp_buf jumpbuf;    
extern jmp_buf cmdbuf;    
extern jmp_buf m_jumpbuf[1 ];    











 
extern int celement;
extern int commandverb;
extern int condition_flag;

extern struct expnode *show_expr[5 ];   
extern struct expnode show_command[5 ];   
extern struct expnode show_expr_table[5 ];   
extern int query_intval;
extern double  query_realval;
extern int set_query_type;
extern ATTR set_query_attr;
extern int query_coord;
 















extern double  volume_factorial;   
extern int subsimplex[1<< 4 ][4 ];   
struct simplex { int pt[4 +1]; };
struct divedge { int endpt[2];   
              int divpt;      
              };



 

extern struct treenode *list;    
extern int listtop;   
extern int listmax;   
 



 



 




 




 





 


 



 




extern double  constraint_tolerance;

 




extern double   overall_size;   
extern int breakflag;      
extern int iterate_flag;   
extern int bare_edge_count;   

struct oldcoord {  
   double   (*coord)[4 ];   
   double   energy;
   double  optparam_values[100 ];
   } ;
extern struct oldcoord saved;

 


extern int ridge_color_flag;   
extern int edgeshow_flag;    
extern int triple_edgeshow_flag;    

 
extern int zoom_number;

 
extern int inner_clip_flag;
extern double  inner_clip_rad;

 
extern int    conj_grad_flag;   
extern double  cg_oldsum;   
extern double    (*cg_hvector)[4 ];   
extern double  cg_gamma;    
extern int  ribiere_flag;  



 
struct bodyface { facet_id f_id;
                  WRAPTYPE wrap;   
                  int      wrapflag;  
                };

 
extern struct tsort { 
               element_id f_id;     
               int   color;      
               int   ecolor[3 ];  
               short  etype[3 ];  
               short  flag;        
               float x[3 ][4 ];     
               float normal[4 ];
               float mins[4 ];    
               float maxs[4 ];    
             } *trilist;
 



 
extern double  bbox_minx,bbox_miny,bbox_maxx,bbox_maxy;
extern int need_bounding_box;   

struct graphdata { double   x[4 +1];   
                   double   norm[4 ];  
                   int    color;    
                   int    backcolor;   
                   int    ecolor;   
                   short   etype;     
                   element_id id;   
                   element_id v_id;     
                   int flags;
                 };
 


 










typedef double   IColor[4];   

extern IColor rgb_colors[16 ];
extern double  facet_alpha;   

 
extern int HOMDIM;

 
# 1634 "eval_sec-slim.c"

extern void (*graph_start)(void); 
extern void (*graph_edge )(struct graphdata *,edge_id); 
extern void (*graph_facet)(struct graphdata *,facet_id); 
extern void (*graph_end)(void);   
extern void (*display_edge )(struct tsort *);
extern void (*display_facet)(struct tsort *);
extern void (*init_graphics)(void);
extern void (*finish_graphics)(void);
extern void (*close_graphics)(void);   


 
extern  int init_flag;  
extern  int bdry_showflag;   
extern  int no_wall_flag;       
extern  int normflag;
extern  int thickenflag;
extern  int innerflag;
extern  int outerflag;
extern  int colorflag;
extern  int OOGL_flag;    
extern  int geomview_flag;    
extern  int geompipe_flag;    
extern  double  thickness;   
extern  int user_thickness_flag;  
extern  int view_4D_flag;   
                            

extern FILE * savefd;    
extern FILE * data_fd;    

extern char cmapname[100];   
typedef double  maprow[4];
extern  maprow *colormap;  
extern int fillcolor;    
 
extern double  gcombo[3 ][3 ];
extern double  sdip[3 ][3 ];
extern double  ssimp[3 ][3 ];
extern double  gauss2wt[3 ];
extern double  poly2partial[6 ][2][2];
extern double  scoeff[3 ][3 ];  
extern double  vcoeff[6 ][6 ][6 ];  
extern int set_by_user_gauss_1D;   
extern int set_by_user_gauss_2D;

 
extern double  **view;    
extern int datafile_view_flag;  
extern int steps; 
extern int energy_init;      

 
struct verfacet { vertex_id v_id; facet_id f_id; };


extern double  wulff_vector[100 ][4 ];   



extern void (*get_wulff)(double  *,double  *);


extern int interp_bdry_param;  
extern double  **phase_data;   
extern char phase_file_name[60 ];   
extern int  phase_flag;     
extern int phasemax;       

extern int fixed_constraint_flag;   
extern double  **leftside;   
extern double  **rleftside;   
extern double  *rightside;   
extern double  *pressures;  
extern int pressure_set_flag;  
extern double  *vol_deficit;  
extern double  *vol_restore;  
extern int no_refine;    



 

extern int reflevel;   
extern double  extrap_val[30 ];  

 
 
struct hess_verlist { 
                 vertex_id v_id;  
                 int freedom;     
                 int rownum;      
                 double  **proj;     
                 double  ***conhess;   
                 double  slant;      
               };
 
struct hess_entry { 
               double  value;
               int col;    
               int row;    
             };
extern struct hess_entry *entry_start;
 
struct hess_index { int count;    
               union {
               int listhead;   
               double  *congrad;    
               } u;
             };
extern struct hess_entry *hashtable;   
extern int table_size;   
extern int hash_per_row;   

extern int hessian_by_diff_flag;  
extern int hessian_quiet_flag;   
extern int hessian_normal_flag;  
extern int hessian_special_normal_flag;  
extern int hessian_normal_perp_flag;  
extern int hessian_normal_one_flag;  
extern int hessian_double_normal_flag;  
extern int hessian_linear_metric_flag;  
extern double  linear_metric_mix;   
extern double  quadratic_metric_mix;  
extern int min_square_grad_flag;  
extern int hess_move_con_flag;  
                           
extern double  last_hessian_scale;  
extern double  last_eigenvalue;    
extern struct hess_index *congrads;  
extern double  *conrhs;    
extern int A_total;  
extern int A_rows;   
extern int total_entries;  
extern struct hess_verlist *vhead;   
extern int vcount;         
extern struct hess_index *array;




extern int hmode;  



 








 
extern int rhs_flag;     
extern int hess_flag;    
extern int negdiag;      
extern int bodyrowstart;   
extern int quanrowstart;   

 



 
 
 
 

 


struct SepNodeType {
  int nvtxs;     
  int lo;        
  int hi;        
  int isleaf;    
  union { struct {
     double  opc;    
     double  subopc;         
      } opc;   
      struct {
          int size;  
          int *vlist;  
          double  *mat;  
      } info;   
  } u;
};
typedef struct SepNodeType SepNodeType;

extern int BK_flag;  
extern double  BKalpha;  
struct BKrow { int start;  
               double  *entry;  
             };
struct linsys { int flags;  
                int N;   
                 
                int *IA;    
                int *JA;    
                double  *A;    
                int *P;     
                int *IP;    
                struct SepNodeType *stree;  
                int streemax;  
                int maxsepsize;  
                int NSP;    
                int *ISP;   
                 
                int *pIA;    
                int *pJA;    
                double  *pA;    
                 
                double  lambda;  
                int *psize;   
                struct BKrow *rowhead;  
                 
                int Lsize;  
                int *LIA;    
                int *LJA;   
                int *LIJA;  
                double  *LA;  
                 
                int concount;  
                int CN;     
                int *coninx;  
                int *coninxinv;  
                double  **C;   
                double  **HinvC;   
                double  **CHinvCinv;  
                 
                int pos,neg,zero;
                 
                double  *apinv;
             };
 







 
 






 
extern struct linsys Met;

extern int ysmp_flag;   
 
 




 
extern void (*sp_mul_func) (struct linsys *, double *,double *)  ;

 
extern void (*sp_AIJ_setup_func) (struct hess_index*,int,struct linsys*)  ;

 
extern void (*sp_constraint_setup_func) (struct hess_index *,int,
   struct linsys *)  ;

 
extern void (*sp_hess_project_setup_func) (struct linsys *)   ;

 
extern void (*sp_factor_func) (struct linsys *)   ;

 
extern int (*sp_kernel_func) (struct linsys *,double  *)   ;

 
extern void (*sp_solve_func) (struct linsys *,double  *,double  *)   ;

 
extern void (*sp_solve_multi_func) (struct linsys*,double **,double **,int)  ;

 
extern void (*sp_ordering_func) (struct linsys *)   ;


 
extern int pos_def_warning_flag;
extern int eigen_pos,eigen_neg,eigen_zero;   
extern int mat_index;  
extern int mat_null;  
extern double  hessian_epsilon;  
extern int make_pos_def_flag;    
extern int hess_debug;   



 
# 1950 "eval_sec-slim.c"

extern double  (*userfunc[])(double *);
extern double  (*userfunc_deriv[])(double *,double *);
extern double  (*userfunc_seconds[])(double *,double *,double **);
extern void (*calc_facet_energy)(facet_id);
extern void (*calc_facet_forces)(facet_id);
extern void (*calc_facet_volume)(facet_id);
extern void (*calc_edge_energy)(edge_id);
extern void (*calc_edge_forces)(edge_id);
extern void (*calc_edge_area)(edge_id);
extern void (*string_grad)(void);
extern void (*film_grad)(void);


 
extern double  *gauss1Dpt;
extern double  *gauss1Dwt;
extern int  gauss1D_num;
extern double  **gauss1poly;   
extern double  **gauss1polyd;  
               
extern int  edge_ctrl;  

 
typedef double  barytype[3];
extern barytype *gauss2Dpt;
extern double  *gauss2Dwt; 
extern double  gauss2Dpt1[1][3]; 
extern double  gauss2Dwt1[1];
extern double  gauss2Dpt2[3][3]; 
extern double  gauss2Dwt2[3];
extern double  gauss2Dpt5[7][3]; 
extern double  gauss2Dwt5[7];
extern double  gauss2Dpt6[12][3]; 
extern double  gauss2Dwt6[12];
extern double  gauss2Dpt8[16][3]; 
extern double  gauss2Dwt8[16];
extern double  gauss2Dpt11[28][3]; 
extern double  gauss2Dwt11[28];
extern double  gauss2Dpt13[37][3]; 
extern double  gauss2Dwt13[37];

 
extern int ctrl_num;   
extern int gauss2D_num;  
extern double  **gpoly;    

extern double  ***gpolypartial;  
                    

 

struct gauss_lag { int lagrange_order;   
                   int  gnumpts;      
                   double  **gausspt;   

                   double  *gausswt;   
                   int  lagpts;     
                   double  **gpoly;    


                   double  ***gpolypart;  


                   double  ***lpolypart;  
                };
extern struct gauss_lag gauss_lagrange[4 ][40 ];

extern double  **metric;   
extern double  ***metric_partial;  
extern double  **det_array;    
     
extern double  euclidean_area;    
extern int klein_metric_flag;
extern int metric_convert_flag;  

 

 


























# 2071 "eval_sec-slim.c"

 


struct veredge { vertex_id v_id; edge_id e_id; };  

 
extern char *symmetry_name;    






typedef void SYM_WRAP(double *,double *,WRAPTYPE);
typedef WRAPTYPE SYM_COMP(WRAPTYPE,WRAPTYPE);
typedef WRAPTYPE SYM_INV (WRAPTYPE);
typedef void SYM_FORM(double *,double *,double *,WRAPTYPE);

extern SYM_WRAP *sym_wrap;
extern int       sym_flags;
extern SYM_FORM *sym_form_pullback;
extern SYM_INV  *sym_inverse;
extern SYM_COMP *sym_compose;
 
struct sym_registry {
   char *name;   
   int flags;   
   SYM_WRAP *wrapper;  
   SYM_COMP *compose;  
   SYM_INV  *inverse;  
   SYM_FORM *pullback;  
   };
 extern struct sym_registry sym_register[];  
 



   

 






 
extern int rotorder;

 
extern int transform_count;
extern double  ***view_transforms;
extern int *view_transform_det;  
extern int transforms_flag;  
extern int transform_gen_count;
extern double  ***view_transform_gens;    
extern char transform_expr[100];   
extern int transform_depth;   
extern int *transform_colors;
extern int *transform_gen_swap;


extern int transform_colors_flag;

 

 


 



enum COLORS {
    BLACK,                   
    BLUE,
    GREEN,
    CYAN,
    RED,
    MAGENTA,
    BROWN,
    LIGHTGRAY,
    DARKGRAY,                
    LIGHTBLUE,
    LIGHTGREEN,
    LIGHTCYAN,
    LIGHTRED,
    LIGHTMAGENTA,
    YELLOW,
    WHITE
};



# 2190 "eval_sec-slim.c"


 











 






 









































































































































































































































































































































































































 
extern int loopdepth;

 
struct treenode { int left;    
                 int right;   
                 int type;   
                 int flags;
                 union { int intval;  
                         double   real;   
                         struct sym *symptr;   
                         char *string;
                         element_id id;   
                         struct expnode enode;   
                         dll_func_type funcptr;
                   } op1;    
                 union { int intval;  
                         struct sym *symptr;   
                         char *string;
                         element_id id;   
                   } op2;    
                 union { int intval[2];  
                         struct sym *symptr;   
                         char *string;
                         element_id id;   
                   } op3;
               };
 





 


 




 






struct qgrad { double  *g;};
struct qhess { double  **gg;};








typedef struct method_instance *MIPTR;



 
struct qinfo {
   element_id id;
   int method;    
   int vcount;   
   vertex_id v[100 ];   
   double  *x[100 ];       
   WRAPTYPE wraps[100 ];   
   double  **xx;  
   double  **u;   
   double  **uu[3];  
   double  **ugrad;   
   double  **uugrad[3];  
   double  ****uhess;   
   double  ****uuhess[3];  
   double  **gauss_pt;  
   int gauss_num;
   double  ***sides;   
   double  **ss;      
   double  normal[4 ];   
   double  **grad;  
   double  ****hess;  
   int axial_order;  
   };

 





typedef void (*INIT_METHOD) (int ,MIPTR)  ;
typedef double  (*VALUE_METHOD)(struct qinfo * );
typedef double  (*GRAD_METHOD)(struct qinfo * );
typedef double  (*HESS_METHOD)(struct qinfo * );

 
struct gen_quant {
   char name[32];    
   int num;          
   int flags;        
                     
   double  target;      
   double  value;       
   double  oldvalue;    
   double  modulus;     
   double  tolerance;   
   double  pressure;    
   body_id b_id;     
   int  vol_number;   
   double  volconst;   
   struct qgrad *grad;    
   struct qhess *hess;    
   int method_count;     
   int meth_inst[50 ];
        
   struct expnode  expr;   
   long timestamp;   
   };











 
 
 

struct gen_quant_method {
  char name[32];   
  int  type;       
  int flags; 
  int spec_flags;  
  INIT_METHOD  init;     
  VALUE_METHOD value;    
  GRAD_METHOD  gradient;  
  HESS_METHOD  hessian;   
  };
 
 






 

 
 








 

struct method_instance {
  char name[32];
  int type;  
  int flags;
  int gen_method;   
  int quant;   
  int vec_order;   
  struct expnode *expr[((4 * 4 )/2) ];   
  double  modulus;     
  double  value;     
  double  oldvalue;    
  double  newvalue;     
  double  procvalue[1 ];  
  double  grad[4 +2][4 ];   
  double  hess[4 ][4 ];   
  double  parameter_1;   
  long timestamp;   
    
  };
 










extern struct method_instance *Meth_inst;





extern struct gen_quant *Gen_quants;



 
extern struct gen_quant_method basic_gen_methods[];

 





 
 



extern int quanrowstart;   

void q_edge_setup(struct qinfo * );
void q_facet_setup(struct qinfo * );
void q_vertex_setup(struct qinfo * );
void q_body_setup(struct qinfo * );
void q_facetedge_setup(struct qinfo * );

extern void (*q_setup[5 ])(struct qinfo * );

void q_edge_setup_q(struct qinfo * );
void q_facet_setup_q(struct qinfo * );
void q_vertex_setup_q(struct qinfo * );
void q_body_setup_q(struct qinfo * );

void q_edge_setup_lagrange(struct qinfo * );
void q_facet_setup_lagrange(struct qinfo * );
 


extern double  null_q_value(struct qinfo * );
extern double  null_q_grad(struct qinfo * );
extern double  null_q_hess(struct qinfo * );

extern void q_edge_tension_init  (int ,struct method_instance*)  ;
extern double  q_edge_tension_value(struct qinfo * );
extern double  q_edge_tension_gradient(struct qinfo * );
extern double  q_edge_tension_hessian(struct qinfo * );

extern double  edge_length_q_value(struct qinfo * );
extern double  edge_length_q_grad(struct qinfo * );
extern double  edge_length_q_hess(struct qinfo * );

extern double  lagrange_edge_tension_value(struct qinfo * );
extern double  lagrange_edge_tension_grad(struct qinfo * );
extern double  lagrange_edge_tension_hess(struct qinfo * );

extern double  q_edge_area(struct qinfo * );
extern double  q_edge_area_grad(struct qinfo * );
extern double  q_edge_area_hess(struct qinfo * );

extern double  q_edge_area_q(struct qinfo * );
extern double  q_edge_area_q_grad(struct qinfo * );
extern double  q_edge_area_q_hess(struct qinfo * );

extern double  q_edge_area_lagrange(struct qinfo * );
extern double  q_edge_area_lagrange_grad(struct qinfo * );
extern double  q_edge_area_lagrange_hess(struct qinfo * );

extern double  q_edge_torus_area(struct qinfo * );
extern double  q_edge_torus_area_grad(struct qinfo * );
extern double  q_edge_torus_area_hess(struct qinfo * );

extern double  q_edge_torus_area_q(struct qinfo * );
extern double  q_edge_torus_area_q_grad(struct qinfo * );
extern double  q_edge_torus_area_q_hess(struct qinfo * );

extern double  q_edge_torus_area_lagrange(struct qinfo * );
extern double  q_edge_torus_area_lagrange_grad(struct qinfo * );
extern double  q_edge_torus_area_lagrange_hess(struct qinfo * );

extern double  gap_energy(struct qinfo * );
extern double  gap_grads(struct qinfo * );

extern double  dihedral_hooke_energy(struct qinfo * );
extern double  dihedral_hooke_grad(struct qinfo * );
extern double  dihedral_hooke_hess(struct qinfo * );

extern void wulff_method_init  (int ,struct method_instance*)  ;
extern double  facet_wulff_value(struct qinfo * );
extern double  facet_wulff_grad(struct qinfo * );

extern double  klein_length_method(struct qinfo * );
extern double  klein_length_method_grad(struct qinfo * );

extern double  klein_area_method(struct qinfo * );
extern double  klein_area_method_grad(struct qinfo * );

extern void q_facet_tension_init  (int ,struct method_instance*)  ;
extern double  q_facet_tension_value(struct qinfo * );
extern double  q_facet_tension_gradient(struct qinfo * );
extern double  q_facet_tension_hessian(struct qinfo * );

extern void q_facet_tension_u_init  (int ,struct method_instance*)  ;
extern double  q_facet_tension_u_value(struct qinfo * );
extern double  q_facet_tension_u_gradient(struct qinfo * );
extern double  q_facet_tension_u_hessian(struct qinfo * );

extern double  q_facet_tension_q(struct qinfo * );
extern double  q_facet_tension_q_grad(struct qinfo * );
extern double  q_facet_tension_q_hess(struct qinfo * );

extern double  q_facet_tension_uq(struct qinfo * );
extern double  q_facet_tension_uq_grad(struct qinfo * );
extern double  q_facet_tension_uq_hess(struct qinfo * );

extern double  lagrange_facet_tension_value(struct qinfo * );
extern double  lagrange_facet_tension_grad(struct qinfo * );
extern double  lagrange_facet_tension_hess(struct qinfo * );

extern void metric_area_init  (int ,struct method_instance*)  ;
extern double  metric_area_value(struct qinfo * );
extern double  metric_area_grad(struct qinfo * );
extern double  metric_area_hess(struct qinfo * );

extern double  area_square_value(struct qinfo * );
extern double  area_square_gradient(struct qinfo * );

extern void q_facet_volume_init  (int ,struct method_instance*)  ;
extern double  q_facet_volume(struct qinfo * );
extern double  q_facet_volume_grad(struct qinfo * );
extern double  q_facet_volume_hess(struct qinfo * );

extern double  q_facet_volume_q(struct qinfo * );
extern double  q_facet_volume_q_grad(struct qinfo * );
extern double  q_facet_volume_q_hess(struct qinfo * );

extern double  q_facet_torus_volume(struct qinfo * );
extern double  q_facet_torus_volume_grad(struct qinfo * );
extern double  q_facet_torus_volume_hess(struct qinfo * );

extern double  q_facet_torus_volume_q(struct qinfo * );
extern double  q_facet_torus_volume_q_grad(struct qinfo * );
extern double  q_facet_torus_volume_q_hess(struct qinfo * );

extern double  lagrange_facet_volume(struct qinfo * );
extern double  lagrange_facet_volume_grad(struct qinfo * );
extern double  lagrange_facet_volume_hess(struct qinfo * );

extern double  q_facet_torus_volume_lagr(struct qinfo * );
extern double  q_facet_torus_volume_lagr_grad(struct qinfo * );
extern double  q_facet_torus_volume_lagr_hess(struct qinfo * );

extern void pos_area_hess_init  (int ,struct method_instance*)  ;
extern double  pos_area_hess(struct qinfo * );

extern void sobolev_area_init  (int ,struct method_instance*)  ;
extern double  sobolev_area_hess(struct qinfo * );

extern void dirichlet_area_init  (int ,struct method_instance*)  ;
extern double  dirichlet_area_hess(struct qinfo * );

extern void gauss_integral_init  (int ,struct method_instance*)  ;
extern double  gauss_int_gradient(struct qinfo * );
extern double  gauss_int_energy(struct qinfo * );

extern void sqgauss_method_init  (int ,struct method_instance*)  ;
extern double  sqgauss_method_value(struct qinfo * );
extern double  sqgauss_method_grad(struct qinfo * );

extern void star_sqgauss_method_init  (int ,struct method_instance*)  ;
extern double  star_sqgauss_method_value(struct qinfo * );
extern double  star_sqgauss_method_grad(struct qinfo * );

extern void sqcurve_string_init  (int ,struct method_instance*)  ;
extern double  sqcurve_string_value(struct qinfo * );
extern double  sqcurve_string_grad(struct qinfo * );
extern double  sqcurve_string_hess(struct qinfo * );

extern void mean_int_init  (int ,struct method_instance*)  ;
extern double  mean_int_value(struct qinfo * );
extern double  mean_int_gradient(struct qinfo * );

extern double  vertex_scalar_integral(struct qinfo * );
extern double  vertex_scalar_integral_grad(struct qinfo * );
extern double  vertex_scalar_integral_hess(struct qinfo * );

extern double  edge_scalar_integral(struct qinfo * );
extern double  edge_scalar_integral_grad(struct qinfo * );
extern double  edge_scalar_integral_hess(struct qinfo * );

extern double  edge_scalar_integral_q(struct qinfo * );
extern double  edge_scalar_integral_q_grad(struct qinfo * );
extern double  edge_scalar_integral_q_hess(struct qinfo * );

extern double  edge_scalar_integral_lagr(struct qinfo * );
extern double  edge_scalar_integral_lagr_grad(struct qinfo * );
extern double  edge_scalar_integral_lagr_hess(struct qinfo * );

extern double  edge_vector_integral(struct qinfo * );
extern double  edge_vector_integral_grad(struct qinfo * );
extern double  edge_vector_integral_hess(struct qinfo * );

extern double  edge_vector_integral_q(struct qinfo * );
extern double  edge_vector_integral_q_grad(struct qinfo * );
extern double  edge_vector_integral_q_hess(struct qinfo * );

extern double  edge_vector_integral_lagrange(struct qinfo * );
extern double  edge_vector_integral_lagrange_grad(struct qinfo * );
extern double  edge_vector_integral_lagrange_hess(struct qinfo * );

extern void edge_general_init  (int ,struct method_instance*)  ;
extern double  edge_general_value(struct qinfo * );
extern double  edge_general_grad(struct qinfo * );
extern double  edge_general_hess(struct qinfo * );
extern double  edge_general_value_lagrange(struct qinfo * );
extern double  edge_general_grad_lagrange(struct qinfo * );
extern double  edge_general_hess_lagrange(struct qinfo * );

extern void facet_scalar_integral_init  (int ,struct method_instance*)  ;
extern double  facet_scalar_integral(struct qinfo * );
extern double  facet_scalar_integral_grad(struct qinfo * );
extern double  facet_scalar_integral_hess(struct qinfo * );

extern double  facet_scalar_integral_q(struct qinfo * );
extern double  facet_scalar_integral_q_grad(struct qinfo * );
extern double  facet_scalar_integral_q_hess(struct qinfo * );

extern double  facet_scalar_integral_lagr(struct qinfo * );
extern double  facet_scalar_integral_lagr_grad(struct qinfo * );
extern double  facet_scalar_integral_lagr_hess(struct qinfo * );

extern void facet_vector_integral_init  (int ,struct method_instance*)  ;
extern double  facet_vector_integral(struct qinfo * );
extern double  facet_vector_integral_grad(struct qinfo * );
extern double  facet_vector_integral_hess(struct qinfo * );

extern double  lagrange_vector_integral(struct qinfo * );
extern double  lagrange_vector_integral_grad(struct qinfo * );
extern double  lagrange_vector_integral_hess(struct qinfo * );

extern void simplex_vector_integral_init  (int ,struct method_instance*)  ;
extern double  simplex_vector_integral(struct qinfo * );
extern double  simplex_vector_integral_grad(struct qinfo * );
extern double  simplex_vector_integral_hess(struct qinfo * );

extern void simplex_k_vector_integral_init  (int ,struct method_instance*)  ;
extern double  simplex_k_vector_integral(struct qinfo * );
extern double  simplex_k_vector_integral_grad(struct qinfo * );
extern double  simplex_k_vector_integral_hess(struct qinfo * );

extern double  lagrange_k_vector_integral(struct qinfo * );
extern double  lagrange_k_vector_integral_grad(struct qinfo * );
extern double  lagrange_k_vector_integral_hess(struct qinfo * );

extern double  facet_vector_integral_q(struct qinfo * );
extern double  facet_vector_integral_q_grad(struct qinfo * );
extern double  facet_vector_integral_q_hess(struct qinfo * );

extern void facet_2form_integral_init  (int ,struct method_instance*)  ;
extern double  facet_2form_integral(struct qinfo * );
extern double  facet_2form_integral_grad(struct qinfo * );
extern double  facet_2form_integral_hess(struct qinfo * );

extern double  facet_2form_integral_lagrange(struct qinfo * );
extern double  facet_2form_integral_lagrange_grad(struct qinfo * );
extern double  facet_2form_integral_lagrange_hess(struct qinfo * );

extern void facet_general_init  (int ,struct method_instance*)  ;
extern double  facet_general_value(struct qinfo * );
extern double  facet_general_grad(struct qinfo * );
extern double  facet_general_hess(struct qinfo * );

extern double  facet_general_value_lagr(struct qinfo * );
extern double  facet_general_grad_lagr(struct qinfo * );
extern double  facet_general_hess_lagr(struct qinfo * );

extern void stress_integral_init  (int ,struct method_instance*)  ;
extern double  stress_integral(struct qinfo * );
extern double  stress_integral_grad(struct qinfo * );

extern void sqcurve_method_init  (int ,struct method_instance*)  ;
extern double  sqcurve_method_value(struct qinfo * );
extern double  sqcurve_method_grad(struct qinfo * );

extern void star_sqcurve_method_init  (int ,struct method_instance*)  ;
extern double  star_sqcurve_method_value(struct qinfo * );
extern double  star_sqcurve_method_grad(struct qinfo * );
extern double  star_sqcurve_method_hess(struct qinfo * );

extern void hooke_energy_init  (int ,struct method_instance*)  ;
extern double  hooke_energy(struct qinfo * );
extern double  hooke_energy_gradient(struct qinfo * );
extern double  hooke_energy_hessian(struct qinfo * );

extern void hooke2_energy_init  (int ,struct method_instance*)  ;
extern double  hooke2_energy(struct qinfo * );
extern double  hooke2_energy_gradient(struct qinfo * );
extern double  hooke2_energy_hessian(struct qinfo * );

extern void hooke3_energy_init  (int ,struct method_instance*)  ;
extern double  hooke3_energy(struct qinfo * );
extern double  hooke3_energy_gradient(struct qinfo * );
extern double  hooke3_energy_hessian(struct qinfo * );

extern void local_hooke_init  (int ,struct method_instance*)  ;
extern double  local_hooke(struct qinfo * );
extern double  local_hooke_gradient(struct qinfo * );

extern void linear_elastic_init  (int ,struct method_instance*)  ;
extern double  linear_elastic_energy(struct qinfo * );
extern double  linear_elastic_gradient(struct qinfo * );
extern double  linear_elastic_hessian(struct qinfo * );

extern void linear_elastic_B_init  (int ,struct method_instance*)  ;
extern double  linear_elastic_B_energy(struct qinfo * );
extern double  linear_elastic_B_gradient(struct qinfo * );
extern double  linear_elastic_B_hessian(struct qinfo * );

extern void knot_energy_init  (int ,struct method_instance*)  ;

extern void facet_vector_integral_init  (int ,struct method_instance*)  ;
extern double  facet_vector_integral(struct qinfo * );
extern double  facet_vector_integral_grad(struct qinfo * );
extern double  facet_vector_integral_hess(struct qinfo * );

extern double  facet_2form_integral(struct qinfo * );
extern double  facet_2form_integral_grad(struct qinfo * );
extern double  facet_2form_integral_hess(struct qinfo * );

extern double  stress_integral(struct qinfo * );
extern double  stress_integral_grad(struct qinfo * );

extern void sqcurve_method_init  (int ,struct method_instance*)  ;
extern double  sqcurve_method_value(struct qinfo * );
extern double  sqcurve_method_grad(struct qinfo * );

extern void hooke_energy_init  (int ,struct method_instance*)  ;
extern double  hooke_energy(struct qinfo * );
extern double  hooke_energy_gradient(struct qinfo * );

extern void hooke2_energy_init  (int ,struct method_instance*)  ;
extern double  hooke2_energy(struct qinfo * );
extern double  hooke2_energy_gradient(struct qinfo * );

extern void local_hooke_init  (int ,struct method_instance*)  ;
extern double  local_hooke(struct qinfo * );
extern double  local_hooke_gradient(struct qinfo * );

extern void knot_power_init  (int ,struct method_instance*)  ;

extern double  knot_energy(struct qinfo * );
extern double  knot_energy_gradient(struct qinfo * );
extern double  knot_energy_hessian(struct qinfo * );

extern void charge_gradient_init  (int ,struct method_instance*)  ;
extern double  charge_gradient(struct qinfo * );
extern double  charge_gradient_gradient(struct qinfo * );

extern void uniform_knot_energy_init  (int ,struct method_instance*)  ;
extern double  uniform_knot_energy(struct qinfo * );
extern double  uniform_knot_energy_gradient(struct qinfo * );

extern double  edge_edge_knot_energy(struct qinfo * );
extern double  edge_edge_knot_energy_gradient(struct qinfo * );

extern double  edge_min_knot_energy(struct qinfo * );

extern double  uniform_normalization(struct qinfo * );
extern double  uniform_binormalization(struct qinfo * );

extern double  edge_normalization(struct qinfo * );

extern double  simon_normalization(struct qinfo * );

extern void facet_knot_energy_init  (int ,struct method_instance*)  ;
extern double  facet_knot_energy(struct qinfo * );
extern double  facet_knot_energy_gradient(struct qinfo * );

extern void facet_knot_energy_fix_init  (int ,struct method_instance*)  ;
extern double  facet_knot_energy_fix(struct qinfo * );
extern double  facet_knot_energy_fix_gradient(struct qinfo * );

extern double  buck_knot_energy(struct qinfo * );
extern double  buck_knot_energy_gradient(struct qinfo * );

extern double  proj_knot_energy(struct qinfo * );
extern double  proj_knot_energy_gradient(struct qinfo * );

extern double  sin_knot_energy(struct qinfo * );
extern double  sin_knot_energy_gradient(struct qinfo * );

extern double  circle_knot_energy(struct qinfo * );
extern double  circle_knot_energy_gradient(struct qinfo * );

extern double  average_crossing(struct qinfo * );

extern double  writhe(struct qinfo * );
extern double  writhe_gradient(struct qinfo * );

extern double  twist(struct qinfo * );

extern void sphere_knot_energy_init  (int ,struct method_instance*)  ;
extern double  sphere_knot_energy(struct qinfo * );
extern double  sphere_knot_energy_gradient(struct qinfo * );

extern double  johndust_energy(struct qinfo * );
extern double  johndust_gradient(struct qinfo * );

extern void curvature_forces_init  (int ,struct method_instance*)  ;
extern double  curvature_forces_energy(struct qinfo * );
extern double  curvature_forces(struct qinfo * );

 
extern void ackerman_init  (int ,MIPTR)  ; 
extern double  ackerman_energy(struct qinfo * );
extern double  ackerman_forces(struct qinfo * );

extern void carter_energy_init  (int ,struct method_instance*)  ;
extern double  carter_energy(struct qinfo * );
extern double  carter_energy_gradient(struct qinfo * );

extern void full_gravity_init  (int ,struct method_instance*)  ;

extern void gravity_init  (int ,struct method_instance*)  ;
extern double  gravity_energy(struct qinfo * );
extern double  gravity_grads(struct qinfo * );
extern double  gravity_hessian(struct qinfo * );

extern void string_gravity_init  (int ,struct method_instance*)  ;
extern double  string_gravity_energy(struct qinfo * );
extern double  string_gravity_grads(struct qinfo * );
extern double  string_gravity_hessian(struct qinfo * );

extern void curvature_binormal_init  (int ,struct method_instance*)  ;
extern double  curvature_binormal_energy(struct qinfo * );
extern double  curvature_binormal_force(struct qinfo * );

extern void ddd_gamma_sq_init  (int ,struct method_instance*)  ;
extern double  ddd_gamma_sq_energy(struct qinfo * );
extern double  ddd_gamma_sq_gradient(struct qinfo * );

extern double  true_average_crossing(struct qinfo * );
extern double  true_writhe(struct qinfo * );



 





 





struct web {
    struct skeleton skel[5 ];
    int sizes[5 ];
    int sdim;   
    int dimension;    
    int representation;  
    int modeltype;    
    int lagrange_order;  
    int headvnum;   
    int maxparam;    
    int constraint_addr[127 ];  
    int concount;     
    conmap_t con_global_map[23 ];  
    int con_global_count;   
    double  tolerance;      
    double  target_tolerance;  
    struct boundary boundaries[200 ];  
    struct surf_energy surfen[32 ];  
    MAP surf_global_map;  
    int surfen_count;     
    struct quantity quants[32 ];  
    MAP quant_global_map;  
    int quantity_count;     
    int diffusion_flag;   
    double  diffusion_const;   
    double  simplex_factorial;  
    int torus_clip_flag;
    int torus_body_flag;
    int symmetric_content;  
    int h_inverse_metric_flag;  
    double  meritfactor;    
    int gravflag;        
    double  grav_const;      
    int convex_flag;     
    int pressflag;       
    int constr_flag;     
    int hide_flag;       
    int motion_flag;     

    int symmetry_flag;   
    int torus_flag;     
    int full_flag;     
    int pressure_flag;   
    int projection_flag;  
    int area_norm_flag;  
    int norm_check_flag;   
    double  norm_check_max;   
    int vol_flag;        
    int jiggle_flag;     
    int homothety;       
    int wulff_flag;      
    int wulff_count;     
    char wulff_name[60];  
    vertex_id  zoom_v;    
    double  zoom_radius;     
    double  total_area;
    double  total_energy;
    double  spring_energy;
    int total_facets;
    int bodycount;   
    body_id outside_body;   
    double  scale;     
    double  scale_scale;     
    double  maxscale;     
    double  pressure;    
    double  min_area;       
    double  min_length;     
    double  max_len;        
    double  max_angle;      
    double  temperature;   
    double  spring_constant;   
    int  gauss1D_order;       
    int  gauss2D_order;       
    double  torusv;              
    double  torus_period[4 ][4 ];
    double  **inverse_periods; 
    int  metric_flag;      
    int  conformal_flag;   
    struct expnode metric[4 ][4 ];  
     
     
    int equi_count; 
    int weed_count; 
    int delete_count; 
    int refine_count; 
    int notch_count; 
    int dissolve_count; 
    int pop_count; 
    int where_count; 

 



DY_OFFSET dy_gen_quants_w;
int gen_quant_count_w;
int gen_quant_alloc_w;
int global_count;
int maxglobals;   

DY_OFFSET dy_meth_inst_w;  
int meth_inst_alloc_w;   
int meth_inst_count_w;   

 
int global_meth_inst_flags_w[5 ];
int global_meth_inst_w[5 ][100 ];  
int global_meth_inst_count_w[5 ];

 
 

int quant_flags_w[5 ];

DY_OFFSET dy_freestart_w;   
DY_OFFSET dy_globals_w;


 
 
int meth_attr[5 ] ;  
 
 
 
 
 
  };

extern struct web web;





# 1 "/usr/lib/gcc-lib/alphaev56-unknown-linux-gnu/egcs-2.91.57/include/proto.h" 1 3
 



# 3400 "eval_sec-slim.c" 2



 













# 3442 "eval_sec-slim.c"





 





























































































































































































































































 




 
void zero_seconds  (int, struct dstack *)  ;
void zero_seconds (pcount, stacktop)
int pcount;
struct dstack *stacktop;
{ int i,j;
  for ( i = 0 ; i < pcount ; i++ ) stacktop->deriv[i]  = 0.0;
  for ( i = 0 ; i < pcount ; i++ ) for ( j = 0 ; j < pcount ; j++ ) stacktop->second[i][j]  = 0.0;
}

 








void eval_second(ex,params,pcount,fval,partials,seconds,q_id)
struct expnode *ex;       
double  *params;     
int  pcount;      
double  *fval;       
double  *partials;   
double  **seconds;   
element_id q_id;  
{
  int i,j,n;
  double  x,y,denom;
  struct dstack stack[100];
  register struct dstack *stacktop = stack;
  register struct treenode *node;
  element_id id;

  if ( pcount > 2* 4  )
     kb_error(1009,"More variables than 2*MAXCOORD in eval_second().\n",1 );



 stacktop->value = 0.0;   
 for ( i = 0 ; i < pcount ; i++ ) stacktop->deriv[i]  = 0.0;
 for ( i = 0 ; i < pcount ; i++ ) for ( j = 0 ; j < pcount ; j++ ) stacktop->second[i][j]  = 0.0;
 if ( ex ) 
  for ( node = ex->start+1 ; ; node++ )
   {
    switch ( node->type )
      {
        case 493 :
            stacktop--;
            stacktop[0].value = (double )(stacktop[0].value || stacktop[1].value);
            zero_seconds(pcount,stacktop);
            break;

          default:
            sprintf(errmsg,"Bad expression eval_second() node type: %s.",
                 tokname(node->type));
          kb_error(1016,errmsg,1 );

            break;
     }     
   if ( node == ex->root ) break;
  }     

  *fval = stacktop->value;
  for ( i = 0 ; i < pcount ; i++ )
    { partials[i] = stacktop->deriv[i]; 
      for ( j = 0 ; j < pcount ; j++ )
        seconds[i][j] = stacktop->second[i][j];
    }

  return;
}

