1!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 2! Copyright 2010. Los Alamos National Security, LLC. This material was ! 3! produced under U.S. Government contract DE-AC52-06NA25396 for Los Alamos ! 4! National Laboratory (LANL), which is operated by Los Alamos National ! 5! Security, LLC for the U.S. Department of Energy. The U.S. Government has ! 6! rights to use, reproduce, and distribute this software. NEITHER THE ! 7! GOVERNMENT NOR LOS ALAMOS NATIONAL SECURITY, LLC MAKES ANY WARRANTY, ! 8! EXPRESS OR IMPLIED, OR ASSUMES ANY LIABILITY FOR THE USE OF THIS ! 9! SOFTWARE. If software is modified to produce derivative works, such ! 10! modified software should be clearly marked, so as not to confuse it ! 11! with the version available from LANL. ! 12! ! 13! Additionally, this program is free software; you can redistribute it ! 14! and/or modify it under the terms of the GNU General Public License as ! 15! published by the Free Software Foundation; version 2.0 of the License. ! 16! Accordingly, this program is distributed in the hope that it will be ! 17! useful, but WITHOUT ANY WARRANTY; without even the implied warranty of ! 18! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General ! 19! Public License for more details. ! 20!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 21 22FUNCTION DFDA(I, J, L1, L2, M1, M2, R, ALPHA, COSBETA, WHICHINT) 23 24 ! Build derivative defined in PRB 72 165107 eq. (13) 25 26 USE MYPRECISION 27 28 IMPLICIT NONE 29 30 INTEGER :: I, J, L1, L2, M1, M2, MP 31 REAL(LATTEPREC) :: ALPHA, COSBETA, R, DFDA 32 REAL(LATTEPREC), EXTERNAL :: SLMMP, TLMMP, AM, BM, WIGNERD, UNIVSCALE 33 REAL(LATTEPREC), EXTERNAL :: DSLMMPDA, DTLMMPDA 34 CHARACTER(LEN=1) :: WHICHINT 35 36 DFDA = TWO * WIGNERD(L1, ABS(M1), 0, COSBETA) * & 37 WIGNERD(L2, ABS(M2), 0, COSBETA) * & 38 UNIVSCALE(I, J, L1, L2, 0, R, WHICHINT) * & 39 (ABS(M1) * BM(M1, ALPHA) * AM(M2, ALPHA) + ABS(M2) * & 40 AM(M1, ALPHA) * BM(M2, ALPHA)) 41 42 DO MP = 1, MIN(L1, L2) 43 44 DFDA = DFDA + (DSLMMPDA(L1, M1, MP, ALPHA, COSBETA) * & 45 SLMMP(L2, M2, MP, ALPHA, COSBETA) + & 46 SLMMP(L1, M1, MP, ALPHA, COSBETA) * & 47 DSLMMPDA(L2, M2, MP, ALPHA, COSBETA) + & 48 DTLMMPDA(L1, M1, MP, ALPHA, COSBETA) * & 49 TLMMP(L2, M2, MP, ALPHA, COSBETA) + & 50 TLMMP(L1, M1, MP, ALPHA, COSBETA) * & 51 DTLMMPDA(L2, M2, MP, ALPHA, COSBETA)) * & 52 UNIVSCALE(I, J, L1, L2, MP, R, WHICHINT) 53 54 ENDDO 55 56 RETURN 57 58END FUNCTION DFDA 59