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 22SUBROUTINE PANIC 23 24 USE CONSTANTS_MOD 25 USE SETUPARRAY 26 USE MDARRAY 27 USE PPOTARRAY 28 USE PUREARRAY 29 USE SPARSEARRAY 30 USE COULOMBARRAY 31 USE SPINARRAY 32 USE MYPRECISION 33 USE DIAGARRAY 34 35 IMPLICIT NONE 36 37 INTEGER :: I 38 IF (EXISTERROR) RETURN 39 40 41 IF (MDON .EQ. 1) THEN 42 43 ! 44 ! Write a .cfg file with our problematic configuration 45 ! 46 47 CALL WRTCFGS(-1) 48 49 ELSE 50 51 CALL WRTCFGS(-999) 52 53 ENDIF 54 55 OPEN(UNIT=24, STATUS="UNKNOWN", FILE="myPANICfile.dat") 56 57 WRITE(6,'("# PANIC: SOMETHING BAD HAS HAPPENED! Check myPANICfile.dat")') 58 WRITE(24,'("PANIC: SOMETHING BAD HAS HAPPENED! SOME CLUES TO DIAGNOSE THE PROBLEM FOLLOW")') 59 60 IF (MDON .EQ. 1) THEN 61 WRITE(24,'("Molecular dynamics calculation")') 62 ENDIF 63 64 65 IF (ELECTRO .EQ. 1) THEN 66 WRITE(24,'("Self-consistent charge transfer: on")') 67 WRITE(24,'("SCF tolerance = ", G8.3)') ELEC_QTOL 68 IF (ELECMETH .EQ. 0) THEN 69 WRITE(24,'("Using Ewald summation")') 70 WRITE(24,'("Coulomb accuracy = ",G8.3)') COULACC 71 WRITE(24,'("Real space cut-off for Ewald sum = ", F6.2)') COULCUT 72 ELSEIF (ELECMETH .EQ. 1) THEN 73 WRITE(24,'("Real space electrostatics")') 74 WRITE(24,'("Cut-off tail applied between ", F6.2, F6.2)') & 75 COULR1, COULCUT 76 ENDIF 77 ENDIF 78 79 IF (SPINON .EQ. 1) THEN 80 WRITE(24,'("Spin-polarized calculation")') 81 ENDIF 82 83 IF (SPARSEON .EQ. 1) THEN 84 WRITE(24,'("Sparse matrix calculation")') 85 WRITE(24,'("Numerical threshold = ",G8.3)') NUMTHRESH 86 ENDIF 87 88 89 90 IF (CONTROL .EQ. 1) THEN 91 WRITE(24,'("Diagonalization")') 92 ELSEIF (CONTROL .EQ. 2) THEN 93 WRITE(24,'("SP2 purification at zero temperature")') 94 ELSEIF (CONTROL .EQ. 3) THEN 95 WRITE(24,'("Recursive expansion of the Fermi operator")') 96 ELSEIF (CONTROL .EQ. 4) THEN 97 WRITE(24,'("SP2 purification at finite temperature")') 98 ELSEIF (CONTROL .EQ. 5) THEN 99 WRITE(24,'("SP2/Fermi method at finite temperature")') 100 ENDIF 101 102 IF (CONTROL .NE. 2) THEN 103 WRITE(24,'("KBT (in eV) = ", F16.8)') KBT 104 ENDIF 105 106 IF (CONTROL .EQ. 5) THEN 107 WRITE(24,'("Gershgorin: MAXEVAL, MINEVAL = ", 2F16.8)') MAXEVAL, MINEVAL 108 ENDIF 109 110 IF (LATTEPREC .EQ. KIND(0.0D0)) THEN 111 WRITE(24,'("Double precision arithmetic")') 112 ELSEIF (LATTEPREC .EQ. KIND(0.0)) THEN 113 WRITE(24,'("Single precision arithmetic")') 114 ENDIF 115 116 IF (ENTROPYKIND .EQ. 0) THEN 117 WRITE(24,'("Entropy set = 0")') 118 ELSEIF (ENTROPYKIND .EQ. 1) THEN 119 WRITE(24,'("Using exact ln form for entropy")') 120 ELSEIF (ENTROPYKIND .EQ. 2) THEN 121 WRITE(24,'("Using the close-to-exact expansion of exact entropy (2)")') 122 ELSEIF (ENTROPYKIND .EQ. 3) THEN 123 WRITE(24,'("Using 4th order approximation for entropy")') 124 ELSEIF (ENTROPYKIND .EQ. 4) THEN 125 WRITE(24,'("Using 8th order approximation for entropy")') 126 ENDIF 127 128 WRITE(24,'("Tr[ rho*H ] = ", F16.8)') TRRHOH 129 WRITE(24,'("Pairwise energy = ", F16.8)') EREP 130 131 IF (ELECTRO .EQ. 1) THEN 132 WRITE(24,'("Coulombic + onsite E = ", F16.8)') ECOUL 133 ENDIF 134 135 IF (CONTROL .NE. 2) THEN 136 WRITE(24,'("Electron entropy TS = ", F16.8)') ENTE 137 ENDIF 138 139 IF (CONTROL .EQ. 1 .OR. CONTROL .EQ. 3 .OR. CONTROL .EQ. 5) THEN 140 WRITE(24,'("Chemical potential = ", F16.8)') CHEMPOT 141 ENDIF 142 143 IF (SPINON .EQ. 1) THEN 144 WRITE(24,'("Self-consistent spin energy = ", F16.8)') ESPIN 145 WRITE(24,'("Free atom spin energy = ", F16.8)') ESPIN_ZERO 146 ENDIF 147 148 IF (SPINON .EQ. 0) THEN 149 WRITE(24,'("Total energy (zero K) = ", F16.8)') TRRHOH + EREP - ECOUL 150 WRITE(24,'("")') 151 WRITE(24,'("FREE ENERGY = ", F16.8)') TRRHOH + EREP - ECOUL - ENTE 152 WRITE(24,'("")') 153 ELSEIF (SPINON .EQ. 1) THEN 154 WRITE(24,'("Total energy (zero K) = ", F16.8)') TRRHOH + EREP - ECOUL + & 155 ESPIN - ESPIN_ZERO 156 WRITE(24,'("")') 157 WRITE(24,'("FREE ENERGY = ", F16.8)') TRRHOH + EREP - ECOUL - ENTE + & 158 ESPIN - ESPIN_ZERO 159 WRITE(24,'("")') 160 ENDIF 161 162 IF (ELECTRO .EQ. 1) THEN 163 164 WRITE(24,'("Partial charges")') 165 WRITE(24,'(" Atom Charge")') 166 DO I = 1, NATS 167 WRITE(24,50) I, DELTAQ(I) 168 ENDDO 169 17050 FORMAT(I6, 9X, F11.8) 171 172 ENDIF 173 174 IF (SPINON .EQ. 1) THEN 175 176 WRITE(24,'("")') 177 WRITE(24,'("Orbital spin densitites")') 178 WRITE(24,'("Orbital index Spin density")') 179 DO I = 1, DELTADIM 180 WRITE(24,51) I, DELTASPIN(I) 181 ENDDO 182 18351 FORMAT(I6, 16X,F14.8) 184 185 IF (CONTROL .NE. 1) THEN 186 CALL ALLOCATEDIAG 187 ENDIF 188 189 CALL DIAGMYH 190 191 WRITE(24,'("")') 192 WRITE(24,'("Eigenvalues")') 193 WRITE(24,'(" Up : Down")') 194 DO I = 1, HDIM 195 WRITE(24, 52) I, UPEVALS(I), DOWNEVALS(I) 196 ENDDO 197 19852 FORMAT(I6, 2X, F14.8, 4X, F14.8) 199 200 CALL DEALLOCATEDIAG 201 202 ENDIF 203 204 205 WRITE(24,'("")') 206 WRITE(24,'("Coordinates (in .xyz format!)")') 207 DO I = 1, NATS 208 WRITE(24,54) ATELE(I), CR(1,I), CR(2,I), CR(3,I) 209 ENDDO 210 21153 FORMAT(I6, 1X, 3F18.9, 1X, A2) 21254 FORMAT(A2, 1X, 3G18.9) 213 214 IF (MDON .EQ. 1) THEN 215 216 WRITE(24,'("")') 217 WRITE(24,'("Velocities")') 218 DO I = 1, NATS 219 WRITE(24,53) I, V(1,I), V(2,I), V(3,I), ATELE(I) 220 ENDDO 221 222 ENDIF 223 224 WRITE(24,'("")') 225 WRITE(24,'("Forces")') 226 DO I = 1, NATS 227 WRITE(24,53) I, FTOT(1,I), FTOT(2,I), FTOT(3,I), ATELE(I) 228 ENDDO 229 230 WRITE(24,'("")') 231 WRITE(24,'("Band structure force")') 232 DO I = 1, NATS 233 WRITE(24,53) I, TWO*F(1,I), TWO*F(2,I), TWO*F(3,I), ATELE(I) 234 ENDDO 235 236 WRITE(24,'("")') 237 WRITE(24,'("Pair potential force")') 238 DO I = 1, NATS 239 WRITE(24,53) I, FPP(1,I), FPP(2,I), FPP(3,I), ATELE(I) 240 ENDDO 241 242 IF (ELECTRO .EQ. 1) THEN 243 244 WRITE(24,'("")') 245 WRITE(24,'("Coulomb force")') 246 DO I = 1, NATS 247 WRITE(24,53) I, FCOUL(1,I), FCOUL(2,I), FCOUL(3,I), ATELE(I) 248 ENDDO 249 250 ENDIF 251 252 CLOSE(24) 253 254 RETURN 255 256END SUBROUTINE PANIC 257