--- /dev/null
+/*
+ * create lattice (for usage in vasp POSCAR file)
+ *
+ * author: Frank Zirkelbach <frank.zirkelbach@physik.uni-augsburg.de>
+ *
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "../math/math.h"
+
+#define FCC 0x01
+#define DIAMOND 0x02
+#define ZINCBLENDE 0x03
+
+int main(int argc,char **argv) {
+
+ int i,j,k,l,cnt;
+ t_3dvec basis[3];
+ t_3dvec offset;
+ t_3dvec r,n;
+ char type;
+ double zrot;
+
+ if(argc<5) {
+ printf("usage: %s type lx ly lz\n",argv[0]);
+ return -1;
+ }
+
+ type=argv[1][0];
+ type=DIAMOND;
+
+ zrot=0.0;
+ if(argc==6)
+ zrot=atof(argv[5]);
+
+ offset.x=0.25;
+ offset.y=0.25;
+ offset.z=0.25;
+
+ memset(basis,0,3*sizeof(t_3dvec));
+ basis[0].x=0.5;
+ basis[0].y=0.5;
+ basis[1].x=0.5;
+ basis[1].z=0.5;
+ basis[2].y=0.5;
+ basis[2].z=0.5;
+
+ cnt=0;
+ r.x=0.0;
+ for(i=0;i<atoi(argv[2]);i++) {
+ r.y=0.0;
+ for(j=0;j<atoi(argv[3]);j++) {
+ r.z=0.0;
+ for(k=0;k<atoi(argv[4]);k++) {
+
+ // first atom
+ printf(" %.2f %.2f %.2f T T T\n",r.x,r.y,r.z);
+ cnt+=1;
+ // face centered atoms
+ for(l=0;l<3;l++) {
+ v3_add(&n,&r,&(basis[l]));
+ printf(" %.2f %.2f %.2f T T T\n",n.x,n.y,n.z);
+ cnt+=1;
+ }
+
+ r.z+=1.0;
+ }
+ r.y+=1.0;
+ }
+ r.x+=1.0;
+ }
+
+ // second fcc lattice
+ if(type==DIAMOND) {
+
+ r.x=0.0;
+ for(i=0;i<atoi(argv[2]);i++) {
+ r.y=0.0;
+ for(j=0;j<atoi(argv[3]);j++) {
+ r.z=0.0;
+ for(k=0;k<atoi(argv[4]);k++) {
+
+ // first atom
+ printf(" %.2f %.2f %.2f T T T\n",r.x+0.25,r.y+0.25,r.z+0.25);
+ cnt+=1;
+ // face centered atoms
+ for(l=0;l<3;l++) {
+ v3_add(&n,&r,&(basis[l]));
+ printf(" %.2f %.2f %.2f T T T\n",n.x+0.25,n.y+0.25,n.z+0.25);
+ cnt+=1;
+ }
+
+ r.z+=1.0;
+ }
+ r.y+=1.0;
+ }
+ r.x+=1.0;
+ }
+
+ }
+
+
+ printf("\ntotal: %d ions\n\n",cnt);
+
+ return 0;
+
+}
+