/***************************************************/ /* Conjugate gradient relaxation of Zr/C atomistic */ /* configuration at constant H or stress. */ /* */ /* Ver 2.0, Apr 25 2000, Ju Li (MIT). */ /***************************************************/ #include #include #include #define Zr_ATOM 0 #define C_ATOM 1 #define MAX_TYPE 2 #define RCUT_ZrZr 7.0 #define K_ZrZr 0.1 #define A_ZrZr 2.9296875 #define B_ZrZr 2.58787395638939 #define C_ZrZr 1.32308467741935 #define D_ZrZr 4.3672464262563 #define RCUT_ZrC 3.5 #define K_ZrC K_ZrZr #define A_ZrC 3.24589393669854 #define B_ZrC 2.05679804919117 #define C_ZrC 0.82303818052368 #define D_ZrC 4.15482225815134 #define LAMBDA 0 #define ALPHA_ZrC 1.80853303846249 #define BETA_ZrC 14.59345494373451 #define ALPHA_CZr ALPHA_ZrC #define BETA_CZr BETA_ZrC #define RCUT_CC 0 #define MAX_FIRST 16 #define MAX_FIRST4 64 /* relax.c: */ Aapp_Declare_Config; extern Chemtab ct[1]; extern Tp *tp; extern Neighborlist N[1]; extern M3 sout, stress, H0; extern double pote, volume, workdone, *f; extern bool minimize_builtin_defect, minimize_user_defined_defect; extern bool constant_H, constant_S; extern int builtin_defect_index; extern double perturbation_amplitude; extern unsigned int random_seed; extern double minimization_tolerance; extern int report_frequency; extern bool save_screen_output; extern bool write_config; extern TermString defect_name; extern TermString fname_read; extern TermString fname_out; extern TermString fname_write; #define BUILTIN_XTAL 0 #define BUILTIN_WC 1 #define BUILTIN_C_VACANCY 2 #define BUILTIN_Zr_VACANCY 3 #define BUILTIN_SURFACE_001 4 #define BUILTIN_LEDGE_001_A 5 #define BUILTIN_LEDGE_001_B 6 #define BUILTIN_LEDGE_001_C 7 #define BUILTIN_LEDGE_001_D 8 #define BUILTIN_ZrC_995 9 #define BUILTIN_ZrC_99 10 #define BUILTIN_ZrC_98 11 #define BUILTIN_ZrC_97 12 #define BUILTIN_ZrC_96 13 #define BUILTIN_ZrC_95 14 #define BUILTIN_ZrC_90 15 #define BUILTIN_ZrC_80 16 #define BUILTIN_ZrC_70 17 #define BUILTIN_ZrC_60 18 #define BUILTIN_ZrC_50 19 #define BUILTIN_ZrC_40 20 #define BUILTIN_ZrC_30 21 #define BUILTIN_ZrC_20 22 #define BUILTIN_ZrC_10 23 #define BUILTIN_ZrC_0 24 #define BUILTIN_MAX 25 extern const char *builtin_name [BUILTIN_MAX]; #define DEF_MIN_SHRINKAGE 0.95 #define DEF_MAX_ATOM_DISPLACEMENT (0.05*RCUT_ZrZr) #define DEF_NEIGHBORMAX 128 #define DEFAULT_MAX_POTENTIAL_EVALUATIONS 10000 #define DEFAULT_REPORT_FREQUENCY 100 /* potential.c: */ extern bool NOC; extern TermString potential_name; double potential (int np, M3 H, double *s, Tp *tp, Neighborlist *N, double *f, M3 stress); /* reference.c: */ extern double ep_reference; extern double volumep_reference; extern double lattice_constant_reference; extern double B_reference, C11_C12_reference, C44_reference, C11_reference, C12_reference; void build_reference (FILE *info); /* elastic_constants.c: */ double Calculate_Unrelaxed_Bulk_Modulus (double delta); double Calculate_Unrelaxed_C11_C12 (double delta); double Calculate_Unrelaxed_C44 (double delta); /* work.c: */ /* Calculate the work done by external stress in symmetric */ /* deformation space by straight path Romberg integration: */ double work (M3 H0, M3 sout, M3 U);