* Last processed by NICE on 12-Jun-2000 15:54:00 * Customized for : IEEE, LINUX, UNIX, MOTIF, F77 PROGRAM MAKPLAN_TASK * ============= * * This is the main program of the gildas task MAKPLAN. * It acceeds to SIC variables defined by NIC , when reading a file, and * to 2 shared memory area which contain the subscan data and the record data. * Then it calls the subroutine MAKPLAN which grids data. * INCLUDE 'inc:memory.inc' INCLUDE 'const.inc' INCLUDE 'makplan.inc' * C Shared memory parameters INTEGER*4 POINTER INTEGER*4 IADDRRECORD ! address of shared memory area INTEGER*4 IP,IPSUBSCAN,IPRECORD ! index in memory area INTEGER*4 IP_RECEIVER_FLAG INTEGER*4 IP_PARAM INTEGER*4 IP_XCOO,IP_YCOO INTEGER SIC_GETVM INTEGER DATA_SHMID ! shared memory identifier * INTEGER*4 IADDR_SUBPARAM,IADDR_MAP INTEGER*4 IP_SUBPARAM,IP_MAP * INTEGER IER ! error status INTEGER NMAP REAL FREQ * INTEGER SCAN_TYPE,IFUN INTEGER N_RECEIVERS,NPARAM_RECEIVER,NPARAM_SUBSCAN * * * Read gildas parameters * CALL GILDAS_OPEN CALL GILDAS_INTE('DATA_SHMID$',DATA_SHMID,1) * CALL GILDAS_INTE('NSUBSCAN$',NSUBSCAN,1) CALL GILDAS_INTE('NRECORD$',NRECORD,1) CALL GILDAS_INTE('SCAN_TYPE$',SCAN_TYPE,1) * IF (DATA_SHMID.EQ.0 .OR. NSUBSCAN.EQ.0 .OR. NRECORD.EQ.0) THEN WRITE(6,*) $ 'No valid data in memory. Cannot run MAKPLAN' CALL GILDAS_CLOSE STOP ENDIF * IF (SCAN_TYPE.NE.2) THEN WRITE(6,*) $ 'Observing mode is not "ON_THE_FLY". Cannot run MAKPLAN' CALL GILDAS_CLOSE STOP ENDIF * CALL GILDAS_INTE('SCAN_NUMBER$',SCAN_NUMBER,1) CALL GILDAS_INTE('NCHAN$',NCHANNEL,1) CALL GILDAS_LOGI('JANSKY_FLAG$',JANSKY_FLAG,1) CALL GILDAS_REAL('FREQUENCY$',FREQ,1) CALL GILDAS_CHAR('SNAM$',SNAM) CALL GILDAS_REAL('SLAM$',SLAM,1) CALL GILDAS_REAL('SBET$',SBET,1) CALL GILDAS_REAL('OAZM$',OAZM,1) CALL GILDAS_REAL('OELV$',OELV,1) CALL GILDAS_REAL('XINC$',XINC,1) CALL GILDAS_REAL('YINC$',YINC,1) CALL GILDAS_REAL('SINT$',SINT,1) IF (SINT.EQ.0) THEN WRITE(6,*) $ 'Observing mode is not "ON_THE_FLY". Cannot run MAKPLAN' CALL GILDAS_CLOSE STOP ENDIF CALL GILDAS_REAL('ZIGZAG$',ZIGZAG,1) CALL GILDAS_LOGI('FLIP$',FLIP,1) CALL GILDAS_LOGI('SMOOTH_EL$',SMOOTH_EL,1) CALL GILDAS_INTE('FUNCTION$',IFUN,1) CALL GILDAS_CHAR('TELESCOPE$',TELESCOPE) * CALL GILDAS_CLOSE * * Conversion FREQUENCY = FREQ*1.D9 ! frequency in Herz * * * * Link to data shared memory C+WIN32 c CALL OPEN_SHARED_MEMORY(DATA_SHMID) C-WIN32 CALL ATTACH_MEMORY(DATA_SHMID,IADDRRECORD) IP = POINTER(IADDRRECORD,MEMORY) CALL R4TOR4(MEMORY(IP),N_RECEIVERS,1) CALL R4TOR4(MEMORY(IP+1),NPARAM_RECEIVER,1) CALL R4TOR4(MEMORY(IP+2),NPARAM_SUBSCAN,1) IP_PARAM = IP+3 IP_RECEIVER_FLAG = IP_PARAM + 2*NCHANNEL IPSUBSCAN = IP_PARAM + NPARAM_RECEIVER*NCHANNEL IPRECORD = IPSUBSCAN + NPARAM_SUBSCAN *NSUBSCAN IP_XCOO = IPRECORD+(3+N_RECEIVERS)*NRECORD IP_YCOO = IPRECORD+(4+N_RECEIVERS)*NRECORD * * * Allocate memory for subscan parameters (number of first record and number * of last record) IER = SIC_GETVM(2*NSUBSCAN,IADDR_SUBPARAM) IF (IER.NE.1) THEN WRITE(6,*)' *** Unable to allocate memory (2)***' WRITE(6,*)'ier=',IER STOP ENDIF IP_SUBPARAM = POINTER(IADDR_SUBPARAM,MEMORY) * * * * * Allocate memory for regridded data in azimuth and in elevation (data and * weight) : mapd_a(nlin,ncol,nchannel),mapw_a(),mapw_e() * First find dimension of map (according to xcoord, ycoord and map_cell) * IF (ZIGZAG.NE.0) CALL ZIGZAG_CORRECTION( $MEMORY(IP_XCOO),MEMORY(IPSUBSCAN+3*NSUBSCAN)) CALL MAXMIN_COORD(MEMORY(IP_XCOO),NRECORD,XMIN,XMAX, $MEMORY(IPRECORD+3*NRECORD)) IF (ABS(XMIN-OAZM)*3600.LT.SINT) XMIN= OAZM*3600 NCOL = (XMAX-XMIN)/XINC +1 * NROW = NSUBSCAN CALL MAXMIN_COORD(MEMORY(IP_YCOO),NRECORD,YMIN,YMAX, $MEMORY(IPRECORD+3*NRECORD)) IF (YINC.NE.SINT) THEN NROW = (YMAX-YMIN)/YINC +1 ENDIF NMAP = NCOL*NROW*NCHANNEL * IER = SIC_GETVM(2*NMAP+2*NCOL,IADDR_MAP) IF (IER.NE.1) THEN WRITE(6,*)' *** Unable to allocate memory (3)***' STOP ENDIF IP_MAP = POINTER(IADDR_MAP,MEMORY) * * * * Makplan CALL MAKPLAN( $MEMORY(IPSUBSCAN), $MEMORY(IPSUBSCAN+NSUBSCAN), $MEMORY(IPSUBSCAN+2*NSUBSCAN), $MEMORY(IP_SUBPARAM),MEMORY(IP_SUBPARAM+NSUBSCAN), $MEMORY(IPRECORD), $MEMORY(IPRECORD+3*NRECORD), $MEMORY(IP_XCOO), $MEMORY(IP_YCOO), $MEMORY(IP_MAP),MEMORY(IP_MAP+NCOL),MEMORY(IP_MAP+2*NCOL), $MEMORY(IP_MAP+2*NCOL+NMAP), $MEMORY(IP_RECEIVER_FLAG),IFUN) * STOP END