#include #include #include #include #include "mucal.h" #include "panel.h" /* ********************************************** int get_ZONES4(zones *ZONES, FILE *zonefil) { int i=0, nzon=0, nl, n_z; char iline[256]; fgets(iline, 256, zonefil); /* read header line */ if (feof(zonefil)) goto finis; fgets(iline, 256, zonefil); /* read 2nd header line */ if (feof(zonefil)) goto finis; printf("%s", iline); new_line: fgets(iline, 256, zonefil); if (feof(zonefil)) goto finis; printf("%s", iline); /* The lens is composed of two layers. * * Each of the layers are divided int three azimuth zones, numbered 0 (0-120 deg), 1 (120-240 deg) and 2 (240-360 deg) * * Each of the azimuth zones may by divided into a sequence of radial boxes * * Inside each box we may define a triangular azimuth bin with an alternative (Z, Mill) definition. * * The data for each of the three azimuth zone are: * fR_out, fR_in, Z, Mill, fT, sZ, sMill, fracO, fracI * * The limits for the radial extent of each box are given as fractions of the radius of the lens. * * A 'Z_layer'-value of -1 means that this reflection option shall not be used in this box. * A 'Z_layer'-value of -2 means that the facets in this box shall be left empty. * */ sscanf(iline, "%f %f %d %d %f %d %d %f %d %d %f", &(ZONES[nzon].fR_outer), &(ZONES[nzon].fR_inner), &ZONES[nzon].Z_lay[0][0], &ZONES[nzon].Millay[0][0], &ZONES[nzon].ftlay[0][0], &ZONES[nzon].Z_lay[0][1], &ZONES[nzon].Millay[0][1], &ZONES[nzon].ftlay[0][1], &ZONES[nzon].Z_lay[0][2], &ZONES[nzon].Millay[0][2], &ZONES[nzon].ftlay[0][2]); fgets(iline, 256, zonefil); if (feof(zonefil)) goto finis; printf("%s", iline); sscanf(iline, "%d %d %f %f %f %d %d %f %f %f %d %d %f %f %f", &ZONES[nzon].secZ_lay[0][0], &ZONES[nzon].secMillay[0][0], &ZONES[nzon].secftlay[0][0], &ZONES[nzon].secfracA[0][0], &ZONES[nzon].secfracB[0][0], &ZONES[nzon].secZ_lay[0][1], &ZONES[nzon].secMillay[0][1], &ZONES[nzon].secftlay[0][1], &ZONES[nzon].secfracA[0][1], &ZONES[nzon].secfracB[0][1], &ZONES[nzon].secZ_lay[0][2], &ZONES[nzon].secMillay[0][2], &ZONES[nzon].secftlay[0][2], &ZONES[nzon].secfracA[0][2], &ZONES[nzon].secfracB[0][2]); fgets(iline, 256, zonefil); if (feof(zonefil)) goto finis; printf("%s", iline); sscanf(iline, "%f %f %d %d %f %d %d %f %d %d %f", &(ZONES[nzon].fR_outer), &(ZONES[nzon].fR_inner), &ZONES[nzon].Z_lay[1][0], &ZONES[nzon].Millay[1][0], &ZONES[nzon].ftlay[1][0], &ZONES[nzon].Z_lay[1][1], &ZONES[nzon].Millay[1][1], &ZONES[nzon].ftlay[1][1], &ZONES[nzon].Z_lay[1][2], &ZONES[nzon].Millay[1][2], &ZONES[nzon].ftlay[1][2]); fgets(iline, 256, zonefil); if (feof(zonefil)) goto finis; printf("%s", iline); sscanf(iline, "%d %d %f %f %f %d %d %f %f %f %d %d %f %f %f", &ZONES[nzon].secZ_lay[1][0], &ZONES[nzon].secMillay[1][0], &ZONES[nzon].secftlay[1][0], &ZONES[nzon].secfracA[1][0], &ZONES[nzon].secfracB[1][0], &ZONES[nzon].secZ_lay[1][1], &ZONES[nzon].secMillay[1][1], &ZONES[nzon].secftlay[1][1], &ZONES[nzon].secfracA[1][1], &ZONES[nzon].secfracB[1][1], &ZONES[nzon].secZ_lay[1][2], &ZONES[nzon].secMillay[1][2], &ZONES[nzon].secftlay[1][2], &ZONES[nzon].secfracA[1][2], &ZONES[nzon].secfracB[1][2]); nzon++; goto new_line; finis: fclose(zonefil); for (n_z=0; n_z