App-SeismicUnixGui

 view release on metacpan or  search on metacpan

lib/App/SeismicUnixGui/fortran/src/readmmod.for  view on Meta::CPAN

	VSVPR=0.0
	CALL READ_PAR_R4('VS/VP RATIO TO DEFAULT VS?',VSVPR)
	CALL READ_PAR_I4(' IOP TO DEFINE DENSITIES ?',IOP)
c
	I=1
	DE1=1.5
	AU1=0.
 10	write(*,*) 'LAYER ',I
	write(*,*)
	VT(I)=DE1
	CALL READ_PAR_R4('VPTOP (KM/SEC) ?',VT(I))
	IF(VT(I).LT.0) GO TO 100
	CALL READ_PAR_R4('VPBOTTOM (KM/SEC) ?',VB(I))
	CALL READ_PAR_R4('DEPTH OR TWTT OR THICKNESS (KM OR SEC)?',AU2)
	VST(I)=VSVPR*VT(I)
	VSB(I)=VSVPR*VB(I)
	CALL DENFVP(VT(I),RHOT(I),IOP)
	CALL DENFVP(VB(I),RHOB(I),IOP)
	IF(I.EQ.1) THEN
	VST(I)=0.0
	VSB(I)=0.0
	RHOT(I)=1.0
	RHOB(I)=1.0
	ENDIF
	CALL READ_PAR_R4(
     +  'VSTOP (KM/SEC)? (ENTER 0.0 TO DEFINE A FLUID)',VST(I))
	CALL READ_PAR_R4(
     +  'VSBOTTOM (KM/SEC)? (ENTER 0.0 TO DEFINE A FLUID)',VSB(I))
	CALL READ_PAR_R4('TOP DENSITY (G/CC) ?',RHOT(I))
	CALL READ_PAR_R4('BOTTOM DENSITY (G/CC) ?',RHOB(I))
c
	IF(ID.EQ.0) THEN
	DZ(I)=AU2-AU1
	AU1=AU2
	ELSE
		IF(ID.EQ.1) THEN
		AU3=AU2-AU1 ! LAYER I TWO WAY TRAVEL TIME
		AU1=AU2
		CALL THI(AU3,VT(I),VB(I),DZ(I))
		ELSE
		DZ(I)=AU2
		ENDIF
	ENDIF
	I=I+1
	DE1=VB(I-1)
	GO TO 10
100	NL=I-1
   	VB(I)=0.0
	DZ(I)=0.0
	VST(I)=0.0
	VSB(I)=0.0
	RHOT(I)=0.0
	RHOB(I)=0.0
c
c *** WRITE MODEL IN FILE ***
c
97      ID=1
  	CALL READ_PAR_I4('1- WRITE MODEL IN FILE, 0- NO',ID)
	IF(ID.EQ.0) GO TO 135
	STAT='NEW'
103	write(*,*)'OUTPUT FILE NAME ?? '
	READ(*,'(A)') FOUT
	INQUIRE(FILE=FOUT,EXIST=EX)
	IF(EX) THEN
	write(*,*) 'FILE ALREADY EXISTS: 1- OVERWRITE IT,0- TRY ',
     +  'AGAIN WITH A NEW NAME'
	read(5,*) ID
		IF(ID.EQ.0) GO TO 103
		IF(ID.EQ.1) STAT='UNKNOWN'
	ENDIF
	OPEN(UNIT=IOUT,FILE=FOUT,STATUS=STAT,FORM='UNFORMATTED')
	DO K=1,NL+1
	write(IOUT) VT(K),VB(K),DZ(K),VST(K),VSB(K),RHOT(K),RHOB(K)
	ENDDO
	CLOSE(UNIT=IOUT)
	GO TO 135

! *** READ OLD MODEL FROM DISK ***

110	INQUIRE(FILE=inbound_model,EXIST=EX)
!      print *, 'readmmod.for,inbound_model=',inbound_model
        IF(EX) then
!		write(*,*) ''
!		write(*,*) 'readmmod,Default file immodpg.out exists.'
!		write(*,*) ''
!      call read_par_i4('0- use it , 1- No',idef)
!              if(idef.eq.1) 117
              go to 117
	 else
	       print *, 'Default file immodpg.out is missing!'
 !             if(idef.eq.1) go to 115
              go to 115

	end if

c
115     write(*,*) 'INPUT FILE NAME ?? '
	READ(5,'(A)') inbound_model
	INQUIRE(FILE=inbound_model,EXIST=EX)
	IF(.NOT.EX) THEN
	write(*,*)'FILE DOES NOT EXIST, TRY AGAIN WITH A NEW NAME'
	GO TO 115
	ENDIF
c
117	continue
	OPEN(UNIT=IIN,FILE=inbound_model,STATUS='OLD',FORM='UNFORMATTED')
	K=1
120     READ(IIN) VT(K),VB(K),DZ(K),VST(K),VSB(K),RHOT(K),RHOB(K)
	IF(VT(K).LT.0.) GO TO 125
	K=K+1
	GO TO 120
125	NL=K-1
c
	CLOSE(UNIT=IIN)
!   	write(*,*)'readmmod,FILE = ',inbound_model
	CALL WRIMOD2(NL,VT,VB,DZ,VST,VSB,RHOT,RHOB)
c
c *** MODIFICATIONS ***
c
	ID=0
!	Juan's modification for immodpg.for July 25 2020
!       write(*,*) 'readmmod.for L207'
!	CALL READ_PAR_I4('CHANGE THIS FILE? 1-YES 0-NO',ID)
!        write(*,*) 'readmmod.for L209 ID=', ID
!       FORCE NO READING OF MODEL
	ID=0
	IF(ID.NE.1) GO TO 135
127	write(*,*)'1-DELETE OR 2-INSERT AFTER LAYER,3- CHANGE LAYER '
	read(5,*) IMOD
	write(*,*)'LAYER NUMBER ?? '
	read(5,*) LNU
c
	IF(IMOD.EQ.1) THEN
	DO K=LNU,NL
   	VT(K)=VT(K+1)
	VB(K)=VB(K+1)
	DZ(K)=DZ(K+1)
	VST(K)=VST(K+1)
	VSB(K)=VSB(K+1)
	RHOT(K)=RHOT(K+1)
	RHOB(K)=RHOB(K+1)
	ENDDO
	NL=NL-1
	GO TO 130
	ENDIF
c
	I=LNU
	IF(IMOD.EQ.2) THEN
	K=NL+1
	I=LNU+1
57	CONTINUE
   	VT(K+1)=VT(K)
	VB(K+1)=VB(K)
	DZ(K+1)=DZ(K)
	VST(K+1)=VST(K)
	VSB(K+1)=VSB(K)
	RHOT(K+1)=RHOT(K)



( run in 1.465 second using v1.01-cache-2.11-cpan-39bf76dae61 )