Exemplo n.º 1
0
/*
  To compute the solar azimuthal and zenithal angles (in degrees) for a point over
  the globe defined by its longitude and its latitude (in dec. degrees) for a day of the year (fixed by
  number of the month and number of the day in the month) at any Greenwich Meridian Time (GMT
  dec. hour).
*/
void GeomCond::possol(float tu)
{
    long int ia = 0;
    long int nojour;
/*     solar position (zenithal angle asol,azimuthal angle phi0 */
/*                     in degrees) */
/*     jday is the number of the day in the month */
    day_number(ia, nojour);
    pos_fft (nojour, tu);
    if (asol > 90.f)
	G_warning(_("The sun is not raised"));
}
Exemplo n.º 2
0
/*
* Routine: mk_datetbl
* Purpose: populate the date dimension
* Algorithm:
* Data Structures:
*
* Params:
* Returns:
* Called By: 
* Calls: 
* Assumptions:
* Side Effects:
* TODO: 
*/
int
mk_w_date (void * row, ds_key_t index)
{
	int res = 0;
	
	/* begin locals declarations */
	static date_t base_date;
	int day_index,
		nTemp;
	date_t temp_date, dTemp2;
	struct W_DATE_TBL *r;
	static int bInit = 0;
   tdef *pT = getSimpleTdefsByNumber(DATE);

	if (row == NULL)
		r = &g_w_date;
	else
		r = row;

	if (!bInit)
	{
	    r->d_month_seq = 0;
        r->d_week_seq = 1;
        r->d_quarter_seq = 1;
        r->d_current_month = 0;
        r->d_current_quarter = 0;
        r->d_current_week = 0;
		strtodt(&base_date, "1900-01-01");
        /* Make exceptions to the 1-rng-call-per-row rule */
	bInit = 1;
	}
	
	nullSet(&pT->kNullBitMap, D_NULLS);
	nTemp = (long)index + base_date.julian;
	r->d_date_sk = nTemp;
	mk_bkey(&r->d_date_id[0], nTemp, D_DATE_ID);
	jtodt (&temp_date, nTemp);
	r->d_year = temp_date.year;
	r->d_dow = set_dow (&temp_date);
	r->d_moy = temp_date.month;
	r->d_dom = temp_date.day;
	/* set the sequence counts; assumes that the date table starts on a year boundary */
	r->d_week_seq = ((int)index + 6) / 7;
	r->d_month_seq = (r->d_year - 1900) * 12 + r->d_moy - 1;
	r->d_quarter_seq = (r->d_year - 1900) * 4 + r->d_moy / 3 + 1;
	day_index = day_number (&temp_date);
	dist_member (&r->d_qoy, "calendar", day_index, 6);
	/* fiscal year is identical to calendar year */
	r->d_fy_year = r->d_year;
	r->d_fy_quarter_seq = r->d_quarter_seq;
	r->d_fy_week_seq = r->d_week_seq;
	r->d_day_name = weekday_names[r->d_dow + 1];
	dist_member (&r->d_holiday, "calendar", day_index, 8);
	if ((r->d_dow == 5) || (r->d_dow == 6))
		r->d_weekend = 1;
	else
		r->d_weekend = 0;
	if (day_index == 1)
		dist_member (&r->d_following_holiday, "calendar",
		365 + is_leap (r->d_year - 1), 8);
	else
		dist_member (&r->d_following_holiday, "calendar", day_index - 1, 8);
	date_t_op (&dTemp2, OP_FIRST_DOM, &temp_date, 0);
	r->d_first_dom = dTemp2.julian;
	date_t_op (&dTemp2, OP_LAST_DOM, &temp_date, 0);
	r->d_last_dom = dTemp2.julian;
	date_t_op (&dTemp2, OP_SAME_LY, &temp_date, 0);
	r->d_same_day_ly = dTemp2.julian;
	date_t_op (&dTemp2, OP_SAME_LQ, &temp_date, 0);
	r->d_same_day_lq = dTemp2.julian;
	r->d_current_day = (r->d_date_sk == CURRENT_DAY) ? 1 : 0;
	r->d_current_year = (r->d_year == CURRENT_YEAR) ? 1 : 0;
	if (r->d_current_year)
	{
        r->d_current_month = (r->d_moy == CURRENT_MONTH) ? 1 : 0;
        r->d_current_quarter = (r->d_qoy == CURRENT_QUARTER) ? 1 : 0;
        r->d_current_week = (r->d_week_seq == CURRENT_WEEK) ? 1 : 0;
	}
	
	return (res);
}
Exemplo n.º 3
0
void main ()
{
	FILE*in_file;

	int time;
	int i,j,k;
	int year, month, day;
	int result;
	int day_number1, day_number2;
	int start0,start1;
	int n_calender;

	in_file=fopen("input.txt","r");

	fscanf(in_file,"%d",&time);
	for(i=0; i<time; i++)
	{
		fscanf(in_file,"%d %d",&year,&month);

		start0=(day_number(year, month)+5)%7;
		start1= month_number(year,month);
		n_calender= start1+start0;
		
		for(k=0; k<2; k)
		{
			if(n_calender%7==0)
			{
				break;
			}
			else
			{
				n_calender=n_calender+1;
			}
		}

		printf("%d %d\n",year,month);
		for(j=1;j<n_calender+1;j++)
		{

			if(j<start0+1)
			{
				if(j%7==0)
					printf("0\n");
				else
					printf("0 ");
			}

			else if(j>start1+start0)
			{
				if(j%7==0)
					printf("0\n");
				else
					printf("0 ");
			}
			else
			{
				if(j%7==0)
					printf("%d\n",j-start0);
				else
					printf("%d ",j-start0);
			}
		}


	}




}