213 double sangle[3], cangle[3];
219 if (box ->
param[1][i] == 90.0)
228 sangle[i] = sin(
angle[i]);
229 cangle[i] = cos(
angle[i]);
232 box -> vect[0][0] = box ->
param[0][0];
233 box -> vect[0][1] = box -> vect[0][2] = 0.0;
234 box -> vect[1][0] = box ->
param[0][1] * cangle[2];
235 box -> vect[1][1] = box ->
param[0][1] * sangle[2];
236 box -> vect[1][2] = 0.0;
237 box -> vect[2][0] = box ->
param[0][2] * cangle[1];
238 ltemp = (cangle[0] - cangle[1]*cangle[2]) / sangle[2];
239 box -> vect[2][1] = box ->
param[0][2] * ltemp;
240 box -> vect[2][2] = box ->
param[0][2] * sqrt(sangle[1]*sangle[1] - ltemp*ltemp);
244 for (i=0; i<3; i++) box ->
param[0][i] = v3_length(vec3(box -> vect[i][0], box -> vect[i][1], box -> vect[i][2]));
245 box ->
param[1][0] = (box -> vect[2][0]*box -> vect[1][0] + box -> vect[2][1]*box -> vect[1][1] + box -> vect[2][2]*box -> vect[1][2]);
247 box ->
param[1][1] = (box -> vect[0][0]*box -> vect[2][0] + box -> vect[0][1]*box -> vect[2][1] + box -> vect[0][2]*box -> vect[2][2]);
249 box ->
param[1][2] = (box -> vect[0][0]*box -> vect[1][0] + box -> vect[0][1]*box -> vect[1][1] + box -> vect[0][2]*box -> vect[1][2]);
254 if (box ->
param[1][i] == 0.0)
256 box ->
param[1][i] = 90.0;
263 sangle[i] = sin(
angle[i]);
264 cangle[i] = cos(
angle[i]);
271 g_debug (
" a= %f, b= %f, c= %f", box ->
param[0][0], box ->
param[0][1], box ->
param[0][2]);
272 g_debug (
" alpha= %f, beta= %f, gamma= %f", box ->
param[1][0], box ->
param[1][1], box ->
param[1][2]);
273 g_debug (
" a.x= %f, a.y= %f, a.z= %f", box -> vect[0][0], box -> vect[0][1], box -> vect[0][2]);
274 g_debug (
" b.x= %f, b.y= %f, b.z= %f", box -> vect[1][0], box -> vect[1][1], box -> vect[1][2]);
275 g_debug (
" c.x= %f, c.y= %f, c.z= %f", box -> vect[2][0], box -> vect[2][1], box -> vect[2][2]);
277 box -> vol = (box -> vect[0][1]*box -> vect[1][2] - box -> vect[0][2]*box -> vect[1][1])*box -> vect[2][0];
278 box -> vol += (box -> vect[0][2]*box -> vect[1][0] - box -> vect[0][0]*box -> vect[1][2])*box -> vect[2][1];
279 box -> vol += (box -> vect[0][0]*box -> vect[1][1] - box -> vect[0][1]*box -> vect[1][0])*box -> vect[2][2];
280 box -> vol = fabs(box -> vol);
281 cell -> volume = box -> vol;
283 g_debug (
"Lattice volume= %f", box -> vol);
285 double z = sqrt(fabs(1 - cangle[0]*cangle[0]-cangle[1]*cangle[1]-cangle[2]*cangle[2] + 2*cangle[0]*cangle[1]*cangle[2]));
289 ftc[0][0]=box ->
param[0][0];
290 ftc[0][1]=box ->
param[0][1]*cangle[2];
291 ftc[0][2]=box ->
param[0][2]*cangle[1];
292 ftc[1][1]=box ->
param[0][1]*sangle[2];
293 ftc[1][2]=box ->
param[0][2]*((cangle[0]-cangle[1]*cangle[2])/sangle[2]);
294 ftc[2][2]=box ->
param[0][2]*
z/sangle[2];
295 box -> frac_to_cart = mat4(ftc[0][0], ftc[0][1], ftc[0][2], ftc[0][3],
296 ftc[1][0], ftc[1][1], ftc[1][2], ftc[1][3],
297 ftc[2][0], ftc[2][1], ftc[2][2], ftc[2][3],
298 ftc[3][0], ftc[3][1], ftc[3][2], ftc[3][3]);
299 ftc[0][0]=1.0/box -> frac_to_cart.m00;
300 ftc[0][1]=-cangle[2]/(sangle[2]*box ->
param[0][0]);
301 ftc[0][2]=box ->
param[0][1]*box ->
param[0][2]/box -> vol;
302 ftc[0][2]=ftc[0][2]*(cangle[0]*cangle[2] - cangle[1])/sangle[0];
303 ftc[1][1]=1.0/box -> frac_to_cart.m11;
304 ftc[1][2]=(box ->
param[0][0]*box ->
param[0][2])/box -> vol;
305 ftc[1][2]=ftc[1][2]*(cangle[1]*cangle[2] - cangle[0])/sangle[2];
306 ftc[2][2]=1.0/box -> frac_to_cart.m22;
307 box -> cart_to_frac = mat4 (ftc[0][0], ftc[0][1], ftc[0][2], ftc[0][3],
308 ftc[1][0], ftc[1][1], ftc[1][2], ftc[1][3],
309 ftc[2][0], ftc[2][1], ftc[2][2], ftc[2][3],
310 ftc[3][0], ftc[3][1], ftc[3][2], ftc[3][3]);
313 m4_print (box -> frac_to_cart);
314 m4_print (box -> cart_to_frac);
696 int h, i, j, k, l, m, n, o, p, q, r, s, t;
699 gboolean * taken_pos = NULL;
700 gboolean ** holes_pos = NULL;
701 int * pos_order = NULL;
702 int * site_pos = NULL;
704 int pos_bs, num_bs, site_bs;
707 gboolean low_occ = FALSE;
708 gboolean with_holes = FALSE;
709 gboolean occ_sym = (occupying == 0 || occupying > 2) ? TRUE : FALSE;
714 for (k=0; k<cryst ->
objects; k++)
716 if (cryst -> holes[k])
719 j =
max (j, cryst -> pos_by_object[i]);
728 for (j=0; j<cryst ->
objects; j++)
730 if (! cryst -> holes[j])
737 for (h=0; h<cryst ->
objects; h++)
741 g_debug (
"i= %d, occ[%d]= %f, pbo[%d]= %d", i+1, i+1, cryst -> occupancy[i], i+1, cryst -> pos_by_object[i]);
743 if (cryst -> sites[i][0] > 0 && cryst -> occupancy[i]*cryst -> pos_by_object[i] < 1.0 && ! cryst -> holes[i]) low_occ = TRUE;
745 if (cryst -> sites[i][0] > 0 && cryst -> occupancy[i] < 1.0 && cryst -> pos_by_object[i] > 1)
748 pos_bs = cryst -> pos_by_object[i];
749 site_bs = (cryst -> holes[i]) ? 1 : cryst -> sites[i][0];
750 num_bs = cryst -> sites[i][0];
753 g_debug (
"i= %d, site[%d][0]= %d, pos_bs= %d, num_bs= %d", i+1, i+1, cryst -> sites[i][0], pos_bs, num_bs);
755 for (j=0; j<cryst -> sites[i][0]; j++)
757 k = cryst -> sites[i][j+1];
758 v += cryst -> occupancy[k];
763 for (j=0; j<site_bs; j++)
765 if (holes_pos[i][j]) l ++;
768 for (j=0; j<site_bs; j++)
770 k = cryst -> sites[i][j+1];
772 g_debug (
"\tj= %d, k= %d, sites[%d][0]= %d, occ[%d]= %f, pos_by_objects[%d]= %d",
773 j+1, k+1, k+1, cryst -> sites[k][0], k+1, cryst -> occupancy[k], k+1, cryst -> pos_by_object[k]);
775 if (cryst -> sites[k][0] > -1)
777 num_to_save = round (pos_bs*cryst -> occupancy[k]);
780 g_debug (
"\tnum_to_save= %d, l= %d", num_to_save, l);
784 if ((v == 1.0 && l != pos_bs) || l > pos_bs) num_to_save += (pos_bs-l);
788 while (m < num_to_save)
794 n = (CPU_time - (k+17)*pos_bs) + (3*cryst -> at_by_object[i]);
796 p = round (prob * (pos_bs-1));
799 pick_it = (taken_pos[p] || holes_pos[i][p]) ? FALSE : TRUE;
803 pick_it = ! taken_pos[p];
806 else if (occupying == 3)
811 while (taken_pos[p] || holes_pos[i][p]) p ++;
815 while (taken_pos[p]) p ++;
821 g_debug (
"\t\tp= %d, m= %d, sites[i][0]= %d", p, m, cryst -> sites[k][0]);
823 p = j + m*cryst -> sites[k][0];
824 if (p > cryst -> pos_by_object[k]-1)
826 p -= (cryst -> pos_by_object[k]-1);
829 g_debug (
"\t\tp= %d", p);
833 if (site_pos[n] == p)
836 if (n == cryst -> pos_by_object[k]) n = 0;
843 if (site_pos[o] == n)
863 sort (num_to_save, site_pos);
864 for (m=0; m<num_to_save; m++)
866 g_debug (
"\t\tm= %d, site_pos[%d]= %d", m+1, m+1, site_pos[m]);
869 for (m=0; m<num_to_save; m++)
872 cryst -> coord[k][m] = cryst -> coord[k][n];
873 if (occ_sym && tot_cell > 1)
875 for (o=1; o<tot_cell; o++)
877 p = k+o*(cryst ->
objects/tot_cell);
878 cryst -> coord[p][m] = cryst -> coord[p][n];
883 cryst -> pos_by_object[k] = num_to_save;
884 cryst -> sites[k][0] = -1;
885 if (occ_sym && tot_cell > 1)
887 for (o=1; o<tot_cell; o++)
889 p = k+o*(cryst ->
objects/tot_cell);
890 cryst -> pos_by_object[p] = num_to_save;
891 cryst -> sites[p][0] = -1;
894 if (cryst -> holes[i])
896 for (o=0; o<num_bs; o++)
898 p = cryst -> sites[i][o+1];
899 for (q=0; q<num_to_save; q++)
902 holes_pos[p][r] = TRUE;
903 if (occ_sym && tot_cell > 1)
905 for (s=1; s<tot_cell; s++)
907 t = p+s*(cryst ->
objects/tot_cell);
908 holes_pos[t][r] = TRUE;
920 if (holes_pos) g_free (holes_pos);
938 int h, i, j, k, l, m, n, o, p, q;
943 mat4_t ** wyckpos = g_malloc0 (sp_group -> numw*
sizeof*wyckpos);
947 wyckpos[i] = g_malloc0 (sp_group -> wyckoff[i].
multi*
sizeof*wyckpos[i]);
948 for (j=0; j<sp_group -> wyckoff[i].multi; j++)
952 tmp_pos = g_strdup_printf (
"%s", sp_group -> wyckoff[i].pos[j][k]);
969 wyckpos[i][j] = mat4 (spgpos[0][0], spgpos[0][1], spgpos[0][2], spgpos[0][3],
970 spgpos[1][0], spgpos[1][1], spgpos[1][2], spgpos[1][3],
971 spgpos[2][0], spgpos[2][1], spgpos[2][2], spgpos[2][3],
973 wyckpos[i][j] = m43_mul(sp_group -> wyck_origin, wyckpos[i][j]);
986 points = g_malloc0(sp_group ->
settings[h].nump*
sizeof*points);
987 for (i=0; i<sp_group ->
settings[h].nump; i++)
991 tmp_pos = g_strdup_printf (
"%s", sp_group ->
settings[h].points[i][j]);
996 points[i] = vec3(copos[0], copos[1], copos[2]);
1002 npoints = sp_group ->
settings[h].nump;
1006 points = g_malloc0(1*
sizeof*points);
1007 points[0] = vec3(0.0, 0.0, 0.0);
1016 double amin = box ->
param[0][0];
1017 for (i=1; i<3; i++) amin =
min(amin, box ->
param[0][i]);;
1021 point.
a = this_proj -> id;
1022 point.
b = point.
c = 0;
1023 this_proj -> modelgl = g_malloc0(
sizeof*this_proj -> modelgl);
1043 object = this_proj -> modelgl -> atom_win -> to_be_inserted[2];
1055 this_proj -> modelgl -> search_widg[7] -> todo[i] = 1;
1058 object = this_proj -> modelgl -> atom_win -> to_be_inserted[2];
1062 object =
object -> next;
1065 for (j=0; j<3; j++)
object -> baryc[j] =
this_reader -> coord[i][j];
1071 occupying = this_proj -> modelgl ->
builder_win -> occupancy;
1075 object = this_proj -> modelgl -> atom_win -> to_be_inserted[2];
1080 if (this_proj -> modelgl -> search_widg[7] -> todo[l])
1084 for (m=0; m<
object -> species; m++)
1089 if (
object -> old_z[m] == cdata ->
z[l])
1095 if (! done &&
object -> old_z[m] > 0.0)
1097 cdata ->
z[k] =
object -> old_z[m];
1100 if (
object -> old_z[m] == 0.0)
1102 cdata -> holes[i] = TRUE;
1103 cdata -> with_holes = TRUE;
1106 n = sp_group -> wyckoff[0].multi*npoints;
1108 cdata -> coord[i] = g_malloc0(n*
sizeof*cdata -> coord[i]);
1109 cdata -> insert[i] = m4_mul_coord (sp_group -> coord_origin, vec3(
object -> baryc[0],
object -> baryc[1],
object -> baryc[2]));
1115 for (o=0; o<npoints; o++)
1117 for (p=0; p<sp_group -> wyckoff[0].multi; p++)
1119 pos = v3_add (m4_mul_coord (wyckpos[0][p], cdata -> insert[i]), points[o]);
1123 cdata -> coord[i][n].x = pos.
x;
1124 cdata -> coord[i][n].y = pos.
y;
1125 cdata -> coord[i][n].
z = pos.
z;
1129 cdata -> at_type[i][n] = 1;
1134 cdata -> at_type[i][-(q+1)] ++;
1138 cdata -> pos_by_object[i] = n;
1139 cdata -> occupancy[i] =
object -> occ;
1140 if (! cdata -> holes[i]) cdata -> lot[i] =
allocint(
object ->
atoms);
1142 for (l=0; l<
object ->
atoms; l++)
1144 n =
object -> at_list[l].sp;
1145 cdata ->
position[i][l].x =
object -> at_list[l].x;
1146 cdata ->
position[i][l].y =
object -> at_list[l].y;
1147 cdata ->
position[i][l].
z =
object -> at_list[l].z;
1148 if (! cdata -> holes[i])
1152 if (cdata ->
z[o] ==
object -> old_z[n])
1154 cdata -> lot[i][l] = o;
1160 cdata -> at_by_object[i] =
object ->
atoms;
1165 if (
object -> dim > amin)
1167 str = g_strdup_printf (
"%s size (%f Ang.) is bigger than the min(<b><i>a,b,c</i></b>)\n"
1168 "If you build the crystal the final structure is likely to be crowded !\n"
1169 "Continue anyway ?",
object -> name,
object -> dim);
1171 if (!
ask_yes_no(
"This object might be too big !" , str, GTK_MESSAGE_WARNING, widg))
1174 if (points) g_free (points);
1175 if (wyckpos) g_free (wyckpos);
1179 this_proj -> modelgl -> search_widg[7] =
free_this_search_data (this_proj -> modelgl -> search_widg[7]);
1180 g_free (this_proj -> modelgl);
1181 this_proj -> modelgl = NULL;
1189 j +=
object -> species;
1190 k +=
object ->
atoms;
1193 object =
object -> next;
1200 cdata -> overlapping = (visible) ? this_proj -> modelgl ->
builder_win -> overlapping : FALSE;
1204 if (points) g_free (points);
1205 if (wyckpos) g_free (wyckpos);
1209 this_proj -> modelgl -> search_widg[7] =
free_this_search_data (this_proj -> modelgl -> search_widg[7]);
1210 g_free (this_proj -> modelgl);
1211 this_proj -> modelgl = NULL;
1219 if (points) g_free (points);
1220 if (wyckpos) g_free (wyckpos);
1226 for (i=0; i<cdata ->
objects; i++)
1228 m += (cdata -> holes[i]) ? 1 : 0;
1233 if (! cdata -> overlapping || cdata -> holes[i])
1235 u = cdata -> occupancy[i];
1239 v = cdata -> occupancy[i];
1241 if (u+v > 1.0 || u+v < 0.0)
1244 show_warning (
"Impossible to build crystal: check occupancy !", widg);
1247 else if (cdata -> overlapping && ! cdata -> with_holes)
1249 if (j) cdata -> sites[i][k] = i;
1253 for (l=0; l<cdata ->
objects; l++)
1257 if (cdata -> insert[i].
x == cdata -> insert[l].
x
1258 && cdata -> insert[i].
y == cdata -> insert[l].
y
1259 && cdata -> insert[i].
z == cdata -> insert[l].
z)
1263 if (! cdata -> overlapping || cdata -> holes[i])
1266 cdata -> sites[i][k] = l;
1271 if (! cdata -> overlapping || cdata -> holes[i]) k ++;
1272 if (! cdata -> overlapping || cdata -> holes[l])
1274 u += cdata -> occupancy[l];
1278 v =
max(v, cdata -> occupancy[l]);
1282 show_warning (
"Impossible to build crystal: site total occupancy > 1.0", widg);
1293 cdata -> sites[i] =
allocint (k+1);
1294 cdata -> sites[i][0] = k;
1295 cdata -> sites[i][1] = i;
1296 if (k > 1) cdata -> shared_sites = TRUE;
1314 show_warning (
"Impossible to build crystal: empty site(s) only !", widg);
1317 gboolean new_proj = (this_proj -> natomes && visible) ? TRUE : FALSE;
1336 active_box -> vect[i][j] *= cell -> cextra[i];
1345 tot_cell *= cell -> cextra[i];
1349 i = (occupying == 2) ? 0 : 1;
1350 j = (occupying == 2) ? 1 : tot_cell;
1352 g_free (cryst ->
z);
1354 cryst -> shared_sites = cdata -> shared_sites;
1355 cryst -> overlapping = cdata -> overlapping;
1356 cryst -> with_holes = cdata -> with_holes;
1359 for (k=0; k<cdata ->
objects; k++)
1361 cryst -> pos_by_object[k] = tot_cell*cdata -> pos_by_object[k];
1362 cryst -> at_by_object[k] = cdata -> at_by_object[k];
1363 cryst -> at_type[k] =
duplicate_int (sp_group -> wyckoff[0].
multi*npoints, cdata -> at_type[k]);
1365 if (! cdata -> holes[k]) cryst -> lot[k] =
duplicate_int (cdata -> at_by_object[k], cdata -> lot[k]);
1366 cryst -> occupancy[k] = cdata -> occupancy[k];
1367 cryst -> sites[k] =
duplicate_int (cdata -> sites[k][0]+1, cdata -> sites[k]);
1368 cryst ->
position[k] = g_malloc0 (cdata -> at_by_object[k]*
sizeof*cryst ->
position[k]);
1369 for (l=0; l<cdata -> at_by_object[k]; l++) cryst ->
position[k][l] = cdata ->
position[k][l];
1370 cryst -> coord[k] = g_malloc0(cryst -> pos_by_object[k]*
sizeof*cryst -> coord[k]);
1374 for (k=0; k<cell -> cextra[0]; k++)
1376 vx = v3_muls(vec3(box -> vect[0][0], box -> vect[0][1], box -> vect[0][2]), k);
1377 for (l=0; l<cell -> cextra[1]; l++)
1379 vy = v3_muls(vec3(box -> vect[1][0], box -> vect[1][1], box -> vect[1][2]), l);
1380 for (m=0; m<cell -> cextra[2]; m++)
1382 vz = v3_muls(vec3(box -> vect[2][0], box -> vect[2][1], box -> vect[2][2]), m);
1383 shift = v3_add (vx, v3_add(vy, vz));
1384 for (n=0; n<cdata ->
objects; n++)
1388 cryst -> coord[n+h] = g_malloc0(cdata -> pos_by_object[n]*
sizeof*cryst -> coord[n+h]);
1389 cryst -> pos_by_object[n+h] = cdata -> pos_by_object[n];
1390 cryst -> at_by_object[n+h] = cdata -> at_by_object[n];
1391 cryst -> holes[n+h] = cdata -> holes[n];
1392 cryst -> at_type[n+h] =
duplicate_int (sp_group -> wyckoff[0].
multi*npoints, cdata -> at_type[n]);
1393 if (! cdata -> holes[n]) cryst -> lot[n+h] =
duplicate_int (cdata -> at_by_object[n], cdata -> lot[n]);
1394 cryst -> occupancy[n+h] = cdata -> occupancy[n];
1395 cryst -> sites[n+h] =
duplicate_int (cdata -> sites[n][0]+1, cdata -> sites[n]);
1396 for (o=0; o<cryst -> sites[n+h][0]; o++) cryst -> sites[n+h][o+1] += h;
1397 cryst ->
position[n+h] = g_malloc0 (cdata -> at_by_object[n]*
sizeof*cryst ->
position[n+h]);
1398 for (o=0; o<cdata -> at_by_object[n]; o++) cryst ->
position[n+h][o] = cdata ->
position[n][o];
1400 o = cdata -> pos_by_object[n];
1403 cryst -> coord[n+i*h][p+(!i)*h*o] = v3_add(m4_mul_coord (box -> frac_to_cart, cdata -> coord[n][p]),
shift);
1406 h += (occupying != 2) ? cdata ->
objects : 1;
1414 gboolean dist_chk = TRUE;
1416 if (! cryst -> overlapping)
1418 for (i=0; i<cryst ->
objects; i++)
1420 if (! cryst -> holes[i])
1422 for (j=0; j<cryst -> pos_by_object[i]; j++)
1424 at.
x = cryst -> coord[i][j].x;
1425 at.
y = cryst -> coord[i][j].y;
1426 at.
z = cryst -> coord[i][j].
z;
1427 for (k=i; k<cryst ->
objects; k++)
1429 if (! cryst -> holes[k])
1431 if (k != i || j < cryst -> pos_by_object[i]-1)
1433 l = (k == i) ? j+1 : 0;
1434 for (m=l; m<cryst -> pos_by_object[k]; m++)
1436 bt.
x = cryst -> coord[k][m].x;
1437 bt.
y = cryst -> coord[k][m].y;
1438 bt.
z = cryst -> coord[k][m].
z;
1440 if (
dist.length < 0.5)
1446 if (
ask_yes_no (
"Inter-object distance(s) < 0.5 Ang. !",
1447 "Inter-object distance(s) < 0.5 Ang. !\n\n\t\tContinue and leave a single object at each position ?", GTK_MESSAGE_WARNING, widg))
1460 if (
dist.length < 0.1)
1462 cryst -> at_type[i][j] += cryst -> at_type[k][m];
1463 for (n=m; n<cryst -> pos_by_object[k]-1; n++)
1465 cryst -> coord[k][n].x = cryst -> coord[k][n+1].x;
1466 cryst -> coord[k][n].y = cryst -> coord[k][n+1].y;
1467 cryst -> coord[k][n].
z = cryst -> coord[k][n+1].
z;
1468 cryst -> at_type[k][n] += cryst -> at_type[k][n+1];
1470 cryst -> pos_by_object[k] --;
1485 for (i=0; i<cryst ->
objects; i++)
1487 if (! cryst -> holes[i]) tot_new_at += cryst -> pos_by_object[i]*cryst -> at_by_object[i];
1489 int * tot_new_lot =
allocint(tot_new_at);
1490 vec3_t * ncc = g_malloc0(tot_new_at*
sizeof*ncc);
1492 for (j=0; j<cryst ->
objects; j++)
1494 if (! cryst -> holes[j])
1496 for (k=0; k<cryst -> at_by_object[j]; k++)
1498 for (l=0; l<cryst -> pos_by_object[j]; l++)
1500 ncc[i] = v3_add (cryst -> coord[j][l], cryst ->
position[j][k]);
1501 m = tot_new_lot[i] = cryst -> lot[j][k];
1502 cryst -> nsps[m] ++;
1513 for (j=0; j<cryst -> spec; j++)
1515 if (cryst -> nsps[j]) i ++;
1529 for (i=0; i<cryst -> spec; i++)
1531 if (! cryst -> nsps[i])
1535 if (ncc) g_free (ncc);
1536 if (tot_new_lot) g_free (tot_new_lot);
1545 j = (int)cryst ->
z[i];
1557 for (m=0; m<tot_new_at;m++)
1559 if (tot_new_lot[m] == i) tot_new_lot[m] = k;
1565 copos[0] = copos[1] = copos[2] = 0.0;
1566 if (visible && ! new_proj)
1570 for (j=0; j<3; j++) copos[i] -=
active_box -> vect[j][i]/2.0;
1573 for (i=0; i<tot_new_at; i++)
1591 if (ncc) g_free (ncc);
1592 if (tot_new_lot) g_free (tot_new_lot);
1642 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)
active_glwin -> ogl_mode[0], TRUE);
1674 gtk_check_menu_item_set_active ((GtkCheckMenuItem *)
active_glwin -> ogl_rep[0], TRUE);
1692 gchar * low_warning =
"The crystal will be created however some objects might be missing,\n"
1693 "Occupancy is too low compared to the number of site(s) per cell.\n\n"
1694 "<b>To build a crystal matching the defined occupancy</b>:\n"
1695 "\t <b>1)</b> If you are trying to read a CIF file, use the crystal builder instead.\n"
1696 "\t <b>2)</b> Modify the occupancy set-up to 'Completely random'.\n"
1697 "\t <b>3)</b> Increase the number of unit cells up to get rid of this message.";