00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef DENSITY_MATRIX_H
00012 #define DENSITY_MATRIX_H
00013
00014 #include <gsl/gsl_matrix.h>
00015
00016 #include "quantum_system.h"
00017
00018 typedef struct {
00019 gsl_matrix_complex *dm[NQS_MAX];
00020 int len;
00021 } density_matrix_list_t;
00022
00023 gsl_matrix_complex *density_matrix_combine(quantum_system *qs, density_matrix_list_t *dm_list);
00024 gsl_matrix_complex *density_matrix_traceout(quantum_system *qs, gsl_matrix_complex *dm, int n);
00025 gsl_matrix_complex *density_matrix_traceout_multi(quantum_system *qs, gsl_matrix_complex *dm, quantum_system *mask);
00026
00027 void density_matrix_list_init(density_matrix_list_t *dm_list);
00028 void density_matrix_list_append(density_matrix_list_t *dm_list, gsl_matrix_complex *dm);
00029 void density_matrix_list_free_entries(density_matrix_list_t *dm_list);
00030
00031 gsl_complex density_matrix_expectation_value(gsl_matrix_complex *rho, gsl_matrix_complex *op);
00032
00033 gsl_matrix_complex *density_matrix_pure_TLS(double p_ex);
00034 gsl_matrix_complex *density_matrix_fock_state(int n, int N);
00035 gsl_matrix_complex *density_matrix_coherent_state(double r, double theta, int N);
00036 gsl_matrix_complex *density_matrix_boson_thermal(double w, double w_th, int N);
00037
00038 double density_matrix_concurrence(quantum_system *qs, gsl_matrix_complex *rho);
00039
00040
00041
00042 #endif
00043