1 /* Copyright (C) 2015 Atsushi Togo */
2 /* All rights reserved. */
3 
4 /* This file is part of phonopy. */
5 
6 /* Redistribution and use in source and binary forms, with or without */
7 /* modification, are permitted provided that the following conditions */
8 /* are met: */
9 
10 /* * Redistributions of source code must retain the above copyright */
11 /*   notice, this list of conditions and the following disclaimer. */
12 
13 /* * Redistributions in binary form must reproduce the above copyright */
14 /*   notice, this list of conditions and the following disclaimer in */
15 /*   the documentation and/or other materials provided with the */
16 /*   distribution. */
17 
18 /* * Neither the name of the phonopy project nor the names of its */
19 /*   contributors may be used to endorse or promote products derived */
20 /*   from this software without specific prior written permission. */
21 
22 /* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS */
23 /* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT */
24 /* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS */
25 /* FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE */
26 /* COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, */
27 /* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, */
28 /* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; */
29 /* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER */
30 /* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT */
31 /* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN */
32 /* ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE */
33 /* POSSIBILITY OF SUCH DAMAGE. */
34 
35 #ifndef __imag_self_energy_with_g_H__
36 #define __imag_self_energy_with_g_H__
37 
38 #include <stddef.h>
39 #include "phonoc_array.h"
40 
41 void ise_get_imag_self_energy_at_bands_with_g(double *imag_self_energy,
42                                               const Darray *fc3_normal_squared,
43                                               const double *frequencies,
44                                               const size_t (*triplets)[3],
45                                               const int *weights,
46                                               const double *g,
47                                               const char *g_zero,
48                                               const double temperature,
49                                               const double cutoff_frequency,
50                                               const int num_frequency_points,
51                                               const int frequency_point_index);
52 void ise_get_detailed_imag_self_energy_at_bands_with_g
53 (double *detailed_imag_self_energy,
54  double *imag_self_energy_N,
55  double *imag_self_energy_U,
56  const Darray *fc3_normal_squared,
57  const double *frequencies,
58  const size_t (*triplets)[3],
59  const int *weights,
60  const int *grid_address,
61  const double *g,
62  const char *g_zero,
63  const double temperature,
64  const double cutoff_frequency);
65 void ise_imag_self_energy_at_triplet(double *imag_self_energy,
66                                      const size_t num_band0,
67                                      const size_t num_band,
68                                      const double *fc3_normal_squared,
69                                      const double *frequencies,
70                                      const size_t triplet[3],
71                                      const int triplet_weight,
72                                      const double *g1,
73                                      const double *g2_3,
74                                      PHPYCONST int (*g_pos)[4],
75                                      const size_t num_g_pos,
76                                      const double *temperatures,
77                                      const size_t num_temps,
78                                      const double cutoff_frequency,
79                                      const int openmp_at_bands,
80                                      const int at_a_frequency_point);
81 int ise_set_g_pos(int (*g_pos)[4],
82                   const size_t num_band0,
83                   const size_t num_band,
84                   const char *g_zero);
85 
86 #endif
87