|
| 1 | +!******************************************************************************************* |
| 2 | +MODULE precisione |
| 3 | +IMPLICIT NONE |
| 4 | + |
| 5 | +INTEGER, PARAMETER ::rk =SELECTED_REAL_KIND (p = 12) ! 0.000000000001 = 12 |
| 6 | +INTEGER, PARAMETER ::ik =SELECTED_INT_KIND (r = 6) ! 1000000 = 6 |
| 7 | + |
| 8 | +END MODULE precisione |
| 9 | +!******************************************************************************************* |
| 10 | +MODULE comuni |
| 11 | +USE precisione |
| 12 | +IMPLICIT NONE |
| 13 | + |
| 14 | + |
| 15 | + INTEGER (kind=ik), PARAMETER :: maxc = 80_ik |
| 16 | + CHARACTER (maxc) :: nome, fiume, nulla, nomesez,testo |
| 17 | + INTEGER (kind=ik) :: indsez |
| 18 | + INTEGER (kind=ik) :: nscab |
| 19 | + INTEGER (kind=ik) :: nsezi |
| 20 | + REAL (kind=rk) :: idum |
| 21 | + INTEGER (kind=ik), ALLOCATABLE :: ji2jj (:) |
| 22 | + INTEGER (kind=ik), ALLOCATABLE :: jj2ji (:) |
| 23 | + REAL (kind=rk), ALLOCATABLE :: noms (:) |
| 24 | + REAL (kind=rk), ALLOCATABLE :: si (:) |
| 25 | + INTEGER (kind=ik), ALLOCATABLE :: nrci (:) |
| 26 | + INTEGER (kind=ik), ALLOCATABLE :: npi (:) |
| 27 | + INTEGER (kind=ik), ALLOCATABLE :: flagi (:) |
| 28 | + REAL (kind=rk), ALLOCATABLE :: zargr (:) |
| 29 | + REAL (kind=rk), ALLOCATABLE :: zargl (:) |
| 30 | + INTEGER , ALLOCATABLE :: ibw_sx (:) |
| 31 | + INTEGER , ALLOCATABLE :: ibw_dx (:) |
| 32 | + REAL (kind=rk), ALLOCATABLE :: yi (:,:) |
| 33 | + REAL (kind=rk), ALLOCATABLE :: zi (:,:) |
| 34 | + REAL (kind=rk), ALLOCATABLE :: rks (:,:) |
| 35 | + INTEGER (kind=ik) :: pt_max |
| 36 | + REAL (kind=rk), ALLOCATABLE :: dx (:) |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | +END MODULE comuni |
| 41 | +!############################################################################################################################## |
| 42 | +SUBROUTINE readingsection |
| 43 | +USE comuni |
| 44 | +IMPLICIT NONE |
| 45 | + |
| 46 | +INTEGER (kind=ik) :: ji,jj,j,ierror,iostat |
| 47 | + |
| 48 | +WRITE(*,*) 'Write the name of the file to be converted' |
| 49 | +READ(*,*) nomesez |
| 50 | +nome=TRIM(TRIM(nomesez)//".di") |
| 51 | + |
| 52 | +OPEN (UNIT=1,FILE=nome,STATUS='old',ACTION='read',IOSTAT=ierror) |
| 53 | + |
| 54 | +READ(1,'(A)') fiume |
| 55 | +READ(1,*) indsez |
| 56 | +READ(1,*) nscab,nsezi,idum,idum,idum |
| 57 | + |
| 58 | + CALL alloca |
| 59 | + |
| 60 | +ji=1 |
| 61 | +DO WHILE (ji <= nsezi) |
| 62 | + |
| 63 | + READ(1,*)jj !number of the section, 0 id interpolated section |
| 64 | + ji2jj(ji)=jj |
| 65 | + IF(jj.ne.0)THEN |
| 66 | + READ(1,'(a)') noms(jj) !ID of the section |
| 67 | + READ(1,*) jj2ji(jj) !identification number |
| 68 | + ENDIF |
| 69 | + |
| 70 | + READ(1,*) si(ji),nrci(ji),npi(ji),flagi(ji) |
| 71 | + npi(ji)=npi(ji) |
| 72 | + |
| 73 | + IF(flagi(ji) == 0)THEN |
| 74 | + CALL read_sez(ji) |
| 75 | + ENDIF |
| 76 | + |
| 77 | + ji=ji+1 |
| 78 | +ENDDO |
| 79 | +CLOSE(1) |
| 80 | + |
| 81 | +DO j = 1,nsezi-1 |
| 82 | + dx(j) = si(j+1)-si(j) |
| 83 | +ENDDO |
| 84 | + |
| 85 | + |
| 86 | +RETURN |
| 87 | +END SUBROUTINE readingsection |
| 88 | +!############################################################################################################################## |
| 89 | +SUBROUTINE read_sez(ji) |
| 90 | +USE comuni |
| 91 | +IMPLICIT NONE |
| 92 | + |
| 93 | +INTEGER (kind=ik):: npp,ji,k,j |
| 94 | +npp= npi(ji) |
| 95 | + |
| 96 | +READ(1,*) nulla,zargl(ji),zargr(ji),ibw_sx(ji),ibw_dx(ji) |
| 97 | + |
| 98 | +DO k=1,npp |
| 99 | + |
| 100 | + READ(1,*)yi(k,ji),zi(k,ji),rks(k,ji) |
| 101 | + |
| 102 | +ENDDO |
| 103 | +END SUBROUTINE read_sez |
| 104 | +!############################################################################################################################## |
| 105 | +SUBROUTINE alloca |
| 106 | +USE comuni |
| 107 | +IMPLICIT NONE |
| 108 | + |
| 109 | +INTEGER (kind=ik) :: iostat,i |
| 110 | + |
| 111 | +ALLOCATE (ji2jj (nsezi) , stat = iostat) |
| 112 | +ALLOCATE (jj2ji (nsezi) , stat = iostat) |
| 113 | +ALLOCATE (noms (nsezi) , stat = iostat) |
| 114 | +ALLOCATE (si (nsezi) , stat = iostat) |
| 115 | +ALLOCATE (nrci (nsezi) , stat = iostat) |
| 116 | +ALLOCATE (npi (nsezi) , stat = iostat) |
| 117 | +ALLOCATE (flagi (nsezi) , stat = iostat) |
| 118 | +ALLOCATE (zargl (nsezi) , stat = iostat) |
| 119 | +ALLOCATE (zargr (nsezi) , stat = iostat) |
| 120 | +ALLOCATE (ibw_sx (nsezi) , stat = iostat) |
| 121 | +ALLOCATE (ibw_dx (nsezi) , stat = iostat) |
| 122 | +ALLOCATE (yi (pt_max,nsezi) , stat = iostat) |
| 123 | +ALLOCATE (zi (pt_max,nsezi) , stat = iostat) |
| 124 | +ALLOCATE (rks (pt_max,nsezi) , stat = iostat) |
| 125 | +ALLOCATE (dx (nsezi) , stat = iostat) |
| 126 | + |
| 127 | + |
| 128 | +RETURN |
| 129 | +END SUBROUTINE alloca |
| 130 | +!############################################################################################################################## |
| 131 | +SUBROUTINE writingsection |
| 132 | +USE comuni |
| 133 | +IMPLICIT NONE |
| 134 | + |
| 135 | +INTEGER (kind=ik) :: ji, k |
| 136 | + |
| 137 | + |
| 138 | +OPEN (UNIT=2,FILE='sections.ori',STATUS='unknown',ACTION='write') |
| 139 | +WRITE(2,'(i4)') nsezi |
| 140 | + |
| 141 | +DO ji=1,nsezi |
| 142 | +WRITE(testo,'(i4.4)') ji |
| 143 | +WRITE(2,'(i4,1x,a8)') npi(ji), trim("sez"//testo) |
| 144 | +WRITE(2,'(2(i3,1x,f10.5,1x))') ibw_sx(ji), zargl(ji), ibw_dx(ji), zargr(ji) |
| 145 | +END DO |
| 146 | + |
| 147 | +CLOSE(2) |
| 148 | + |
| 149 | +OPEN (UNIT=3,FILE='points.ori',STATUS='unknown',ACTION='write') |
| 150 | + |
| 151 | +DO ji=1,nsezi |
| 152 | + DO k=1,npi(ji) |
| 153 | + WRITE(3,'(4(f10.5),1x)') si(ji), yi(k,ji),zi(k,ji),rks(k,ji) |
| 154 | + END DO |
| 155 | +END DO |
| 156 | + |
| 157 | +CLOSE(3) |
| 158 | + |
| 159 | +RETURN |
| 160 | +END SUBROUTINE writingsection |
| 161 | +!############################################################################################################################## |
| 162 | +PROGRAM geom_converter |
| 163 | +! Geometry conversion program |
| 164 | + USE comuni |
| 165 | + IMPLICIT NONE |
| 166 | + |
| 167 | + |
| 168 | + pt_max=300 |
| 169 | + |
| 170 | + CALL readingsection |
| 171 | + |
| 172 | + CALL writingsection |
| 173 | + |
| 174 | + |
| 175 | +END PROGRAM geom_converter |
| 176 | + |
| 177 | + |
0 commit comments