Page Menu
Home
c4science
Search
Configure Global Search
Log In
Files
F122031562
meam_setup_param.cpp
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Tue, Jul 15, 10:04
Size
5 KB
Mime Type
text/x-c
Expires
Thu, Jul 17, 10:04 (2 d)
Engine
blob
Format
Raw Data
Handle
27425767
Attached To
rLAMMPS lammps
meam_setup_param.cpp
View Options
extern "C" {
#include "meam.h"
//
// do a sanity check on index parameters
void
meam_checkindex(int num, int lim, int nidx, int* idx /*idx(3)*/, int* ierr)
{
//: idx[0..2]
*ierr = 0;
if (nidx < num) {
*ierr = 2;
return;
}
for (int i = 0; i < num; i++) {
if ((idx[i] < 1) || (idx[i] > lim)) {
*ierr = 3;
return;
}
}
}
//
// Declaration in pair_meam.h:
//
// void meam_setup_param(int *, double *, int *, int *, int *);
//
// in pair_meam.cpp
//
// meam_setup_param(&which,&value,&nindex,index,&errorflag);
//
//
//
// The "which" argument corresponds to the index of the "keyword" array
// in pair_meam.cpp:
//
// 0 = Ec_meam
// 1 = alpha_meam
// 2 = rho0_meam
// 3 = delta_meam
// 4 = lattce_meam
// 5 = attrac_meam
// 6 = repuls_meam
// 7 = nn2_meam
// 8 = Cmin_meam
// 9 = Cmax_meam
// 10 = rc_meam
// 11 = delr_meam
// 12 = augt1
// 13 = gsmooth_factor
// 14 = re_meam
// 15 = ialloy
// 16 = mixture_ref_t
// 17 = erose_form
// 18 = zbl_meam
// 19 = emb_lin_neg
// 20 = bkgd_dyn
void
meam_setup_param_(int* which_p, double* value_p, int* nindex_p,
int* index /*index(3)*/, int* errorflag)
{
//: index[0..2]
int i1, i2, val;
*errorflag = 0;
int which = *which_p;
double value = *value_p;
int nindex = *nindex_p;
switch (which) {
// 0 = Ec_meam
case 0:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.Ec_meam[index[0]][index[1]] = value;
break;
// 1 = alpha_meam
case 1:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.alpha_meam[index[0]][index[1]] = value;
break;
// 2 = rho0_meam
case 2:
meam_checkindex(1, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.rho0_meam[index[0]] = value;
break;
// 3 = delta_meam
case 3:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.delta_meam[index[0]][index[1]] = value;
break;
// 4 = lattce_meam
case 4:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
val = (int)value;
if (val == 0)
meam_data.lattce_meam[index[0]][index[1]] = FCC;
else if (val == 1)
meam_data.lattce_meam[index[0]][index[1]] = BCC;
else if (val == 2)
meam_data.lattce_meam[index[0]][index[1]] = HCP;
else if (val == 3)
meam_data.lattce_meam[index[0]][index[1]] = DIM;
else if (val == 4)
meam_data.lattce_meam[index[0]][index[1]] = DIA;
else if (val == 5)
meam_data.lattce_meam[index[0]][index[1]] = B1;
else if (val == 6)
meam_data.lattce_meam[index[0]][index[1]] = C11;
else if (val == 7)
meam_data.lattce_meam[index[0]][index[1]] = L12;
else if (val == 8)
meam_data.lattce_meam[index[0]][index[1]] = B2;
break;
// 5 = attrac_meam
case 5:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.attrac_meam[index[0]][index[1]] = value;
break;
// 6 = repuls_meam
case 6:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.repuls_meam[index[0]][index[1]] = value;
break;
// 7 = nn2_meam
case 7:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
i1 = min(index[0], index[1]);
i2 = max(index[0], index[1]);
meam_data.nn2_meam[i1][i2] = (int)value;
break;
// 8 = Cmin_meam
case 8:
meam_checkindex(3, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.Cmin_meam[index[0]][index[1]][index[2]] = value;
break;
// 9 = Cmax_meam
case 9:
meam_checkindex(3, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.Cmax_meam[index[0]][index[1]][index[2]] = value;
break;
// 10 = rc_meam
case 10:
meam_data.rc_meam = value;
break;
// 11 = delr_meam
case 11:
meam_data.delr_meam = value;
break;
// 12 = augt1
case 12:
meam_data.augt1 = (int)value;
break;
// 13 = gsmooth
case 13:
meam_data.gsmooth_factor = value;
break;
// 14 = re_meam
case 14:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
meam_data.re_meam[index[0]][index[1]] = value;
break;
// 15 = ialloy
case 15:
meam_data.ialloy = (int)value;
break;
// 16 = mixture_ref_t
case 16:
meam_data.mix_ref_t = (int)value;
break;
// 17 = erose_form
case 17:
meam_data.erose_form = (int)value;
break;
// 18 = zbl_meam
case 18:
meam_checkindex(2, maxelt, nindex, index, errorflag);
if (*errorflag != 0)
return;
i1 = min(index[0], index[1]);
i2 = max(index[0], index[1]);
meam_data.zbl_meam[i1][i2] = (int)value;
break;
// 19 = emb_lin_neg
case 19:
meam_data.emb_lin_neg = (int)value;
break;
// 20 = bkgd_dyn
case 20:
meam_data.bkgd_dyn = (int)value;
break;
default:
*errorflag = 1;
}
}
}
Event Timeline
Log In to Comment