00001 /* 00002 * Functions related to definition of quantum systems (composed of subsystems 00003 * with different sizes) and enummeration of states 00004 * 00005 * Robert Johansson <robert@riken.jp> 00006 * 00007 * $Id: quantum__system_8h-source.html,v 1.1.1.1 2008-09-03 09:36:41 rob Exp $ 00008 */ 00009 00010 #include <math.h> 00011 00012 #ifndef QUANTUM_SYSTEM_H 00013 #define QUANTUM_SYSTEM_H 00014 00015 #define NQS_MAX 20 00016 00017 typedef int quantum_system_state_vector_t[NQS_MAX]; 00018 00019 typedef struct { 00020 /* system 0: 2 levels 00021 * system 1: 2 levels 00022 * system 3: 10 levels 00023 * etc. 00024 */ 00025 00026 /* Number of subsystems in the quantum system */ 00027 int nsubsys; 00028 00029 /* Number of states of each subsystem */ 00030 int *nstates; 00031 } quantum_system; 00032 00033 00034 quantum_system * quantum_system_new(); 00035 quantum_system * quantum_system_copy(quantum_system *qs); 00036 void quantum_system_print(quantum_system *qs); 00037 void quantum_system_free(quantum_system *qs); 00038 void quantum_system_add(quantum_system *qs, int M); 00039 int quantum_system_nstates(quantum_system *qs); 00040 void quantum_system_state_vector(quantum_system *qs, int qsn, quantum_system_state_vector_t qsv); 00041 int quantum_system_state_number(quantum_system *qs, quantum_system_state_vector_t qsv); 00042 00043 00044 #endif