SUBROUTINE MODHDR( FREQ, NMEDIA, NTOT, NMAT,
     &   MATER, DEPTH, RHO,                                          
     &   BCTOP, CST, RHOT, DEPTHT,                                           
     &   BCBOT, CSB, RHOB, DEPTHB,                                           
     &   M, Z, KTOP2, KBOT2 )                                  
                                                                        
C     Note T suffix means top                                           
C          B suffix means bottom                                        
                                                                        
      PARAMETER ( PI = 3.141592 )                                       
      
      REAL ETIME, CPSEC(2)
      REAL CPUBEG, CPUEND
      REAL CPEIGV, CPEIGF, CPNEWP, CPFILE
      
      CHARACTER MATER( * )*8,                
     &          BCTOP*1, BCBOT*1, MODEL*8                                
                                                                        
                                                                        
      REAL      DEPTH( * ), Z( * ), RHO( * )                            
                                                                        
      DOUBLE PRECISION H0, H1                                           
                                                                        
      COMPLEX   CPT, CST, CPB, CSB, KTOP2, KBOT2                        
                                                                        
      COMMON /G/ H0, H1                                                 
      COMMON /LUNIT/ LUPLP, LUPLT, LUPRT
      COMMON /MODEL/ MODEL                                               
      COMMON /N/ MINMOD, MAXMOD, MODCUT, HBEAM, BPHVEL                   
      COMMON /TIMING/ CPEIGV, CPEIGF, CPNEWP, CPFILE                    
                                                                        
      INCLUDE 'param.inc'                                               
      INCLUDE 'acommon.inc'                                             
                                                                        
                                                                        
                                                                        
  100 FORMAT(1X,' MAX SIZE EXCEEDED FOR MODAL INFO IN SUB MODHDR.',/,   
     & '  MAX ALLOWED NUMBER OF MODES            : ',I5,/,              
     & '  NUMBER OF EXISTING MODES AT THIS RANGE : ',I5,/,              
     & '  CALCULATION RESUMED WITH MAX ALLOWED NUMBER OF MODES.' )      
                                                                        
                                                                        
                                                                        
      CPUBEG= ETIME(CPSEC)                                     
                                                                        
C     *** Read header info ***                                          
                                                                        
      H0= AH0(CURRNT)                                                 
      H1= AH1(CURRNT)                                                 
                                                                        
      MODEL(1:7)= 'C-SNAP '                                             
      NMEDIA= ANMED(CURRNT)                                            
C     PRINT *,' SUB MODHDR CURRNT, ALTOT:',CURRNT, ALTOT(CURRNT)        
      NTOT= ALTOT(CURRNT)                                              
      NMAT= NTOT                                                           
C      MINMOD= AMINM(CURRNT)                                           
C     FREQ= ?????????????  FORSE NON SERVE                                 
C ************************************************************************
                                                                        
                                                                        
C      N( 1 )= AMH0(CURRNT)                                              
      MATER( 1 )= 'ACOUSTIC'                                              
      IF( NMEDIA .GT. 1 )   THEN                                          
C        N( 2 )= AMSED(CURRNT)                                           
        MATER( 2 )= 'ACOUSTIC'                                            
      END IF                                                              
C ************************************************************************
                                                                        
                                                                        
      BCTOP(1:1)= 'V'                                                   
      CPT= CMPLX(0.0, 0.0)                                              
      CST= CMPLX(0.0, 0.0)                                              
      RHOT= 0.0                                                         
      DEPTHT= 0.0                                                       
      BCBOT(1:1)= 'A'                                                   
      CPB= CMPLX( AC2(CURRNT), 0.0 )                                 
      CSB= CMPLX( AC2S(CURRNT), 0.0 )                               
      RHOB= AR2(CURRNT)                                               
      DEPTHB= AH0H1(CURRNT)                                         
C ************************************************************************
                                                                        
                                                                        
      DEPTH( 1 )= 0.0                                                     
      RHO( 1 )= 1.0                                                       
      IF( NMEDIA .GT. 1)   THEN                                           
        DEPTH( 2 )= AH0(CURRNT)                                       
        RHO( 2 )= AR1(CURRNT)                                         
      END IF                                                              
C ************************************************************************
                                                                        
                                                                        
      M= AMQTY(CURRNT)                                              
                                                                        
C ************************************************************************
                                                                        
                                                                        
      IF ( M .EQ. 0 ) RETURN                                            
                                                                        

      Z(1)= 0.0
      DO 1600   IZ= 1, AMH0(CURRNT) - 1
      Z(IZ+1)= ADH0(CURRNT)*IZ * AH0(CURRNT)
 1600 CONTINUE
      IF( AH1(CURRNT) .GT. 0.0 )   THEN
       ISTART= AMH0(CURRNT)
       DO 1800   IZ= 1, AMSED(CURRNT)
       Z(ISTART+IZ)= ADSED(CURRNT)*IZ*AH0(CURRNT) + AH0(CURRNT)
 1800  CONTINUE
      END IF

                                                                        
C ************************************************************************
                                                                        
      IF( M .GT. NMAM2 )   THEN                                         
        WRITE(LUPRT,100) NMAM2, M                                           
        AMQTY(CURRNT)= NMAM2                                        
        M= NMAM2                                                        
      END IF                                                            
                                                                        
      M=MIN(MODCUT,M)                                                    
                                                                        
      IF ( BCTOP(1:1) .EQ. 'A' ) KTOP2 = ( 2.0 * PI * FREQ / CPT ) **2  
      IF ( BCBOT(1:1) .EQ. 'A' ) KBOT2 = ( 2.0 * PI * FREQ / CPB ) **2  
                                                                        
      CPUEND= ETIME(CPSEC)
                                     
      CPFILE= CPFILE + CPUEND - CPUBEG                                  
      RETURN                                                            
      END