1 subroutine wtime 2 3 include "common.h" 4 include "mpif.h" 5 include "auxmpi.h" 6 7 character*5 cname 8 9 dimension timeg(100,numpe) 10 11 if (numpe > 1) then 12 CALL MPI_GATHER (ttim, 100, MPI_DOUBLE_PRECISION, timeg, 100, 13 & MPI_DOUBLE_PRECISION, master, 14 & MPI_COMM_WORLD, ierr) 15 endif 16 if (myrank .eq. master) then 17 18 ftime = trim(ftime) // cname(lstep) 19 20 open (itime, file=ftime, form='formatted') 21 22 write (itime,101) 'Tcore cpu/wc: ',ttim(1), ttim(2) 23 write (itime,100) 'local : ',ttim(3) ,ttim(3) /ttim(2) 24 write (itime,100) 'global : ',ttim(4) ,ttim(4) /ttim(2) 25 write (itime,100) 'communic. : ',ttim(5) ,ttim(5) /ttim(2) 26 write (itime,100) 27 write (itime,100) 'e3q : ',ttim(33),ttim(33)/ttim(2) 28 write (itime,100) ' e3qvar : ',ttim(34),ttim(34)/ttim(2) 29 write (itime,100) 'e3 outside : ',ttim(31),ttim(31)/ttim(2) 30 write (itime,100) 'e3 : ',ttim(6) ,ttim(6) /ttim(2) 31 write (itime,100) 'e3ivar out : ',ttim(8), ttim(8) /ttim(2) 32 write (itime,100) 'e3ivar : ',ttim(20),ttim(20)/ttim(2) 33 write (itime,100) ' dui : ',ttim(10),ttim(10)/ttim(2) 34 write (itime,100) ' prim vars : ',ttim(11),ttim(11)/ttim(2) 35 write (itime,100) ' acc : ',ttim(12),ttim(12)/ttim(2) 36 write (itime,100) ' therm prop: ',ttim(27),ttim(27)/ttim(2) 37 write (itime,100) ' dxidx : ',ttim(26),ttim(26)/ttim(2) 38 write (itime,100) ' shape grad: ',ttim(13),ttim(13)/ttim(2) 39 write (itime,100) ' grad Y : ',ttim(7), ttim(7) /ttim(2) 40 write (itime,100) ' div (qi) : ',ttim(32),ttim(32)/ttim(2) 41 write (itime,100) 'e3mtrx out : ',ttim(9) ,ttim(9) /ttim(2) 42 write (itime,100) 'e3mtrx : ',ttim(21),ttim(21)/ttim(2) 43 write (itime,100) 'e3conv out : ',ttim(14),ttim(14)/ttim(2) 44 write (itime,100) 'e3conv : ',ttim(22),ttim(22)/ttim(2) 45 write (itime,100) 'e3visc out : ',ttim(15),ttim(15)/ttim(2) 46 write (itime,100) 'e3visc : ',ttim(23),ttim(23)/ttim(2) 47 write (itime,100) 'e3LS out : ',ttim(16),ttim(16)/ttim(2) 48 write (itime,100) 'e3LS : ',ttim(24),ttim(24)/ttim(2) 49 write (itime,100) ' e3tau : ',ttim(25),ttim(25)/ttim(2) 50 write (itime,100) 'e3juel out : ',ttim(17),ttim(17)/ttim(2) 51 write (itime,100) 'e3juel : ',ttim(28),ttim(28)/ttim(2) 52 write (itime,100) 'e3bdg out : ',ttim(18),ttim(18)/ttim(2) 53 write (itime,100) 'e3bdg : ',ttim(30),ttim(30)/ttim(2) 54 write (itime,100) 'e3assm out : ',ttim(19),ttim(19)/ttim(2) 55 write (itime,100) 'e3assm : ',ttim(29),ttim(29)/ttim(2) 56 write (itime,100) 57 write (itime,100) 'e3b : ',ttim(40),ttim(40)/ttim(2) 58 write (itime,100) 'e3nref : ',ttim(42),ttim(42)/ttim(2) 59 write (itime,100) 60 ttim(50) = ttim(51) + ttim(52) + ttim(53) 61 write (itime,100) 'bc : ',ttim(50),ttim(50)/ttim(2) 62 write (itime,100) ' bc3res : ',ttim(51),ttim(51)/ttim(2) 63 write (itime,100) ' bcbdg : ',ttim(52),ttim(52)/ttim(2) 64 write (itime,100) ' itrbc : ',ttim(53),ttim(53)/ttim(2) 65 write (itime,100) 66 write (itime,100) 'vy : ',ttim(55),ttim(55)/ttim(2) 67 write (itime,100) 'vq : ',ttim(56),ttim(56)/ttim(2) 68 write (itime,100) 69 write (itime,100) 'getdmc : ',ttim(60),ttim(60)/ttim(2) 70 write (itime,100) 'sumgat-wait : ',ttim(61),ttim(61)/ttim(2) 71 write (itime,100) 'sumgat-work : ',ttim(62),ttim(62)/ttim(2) 72 write (itime,100) 'gerbar (cur): ',ttim(64),ttim(64)/ttim(2) 73 write (itime,100) 'sponge : ',ttim(66),ttim(66)/ttim(2) 74 write (itime,100) 'rstat-wait : ',ttim(67),ttim(61)/ttim(2) 75 write (itime,100) 'rstat-work : ',ttim(68),ttim(62)/ttim(2) 76 write (itime,100) 77 write (itime,100) 'barrier 1 : ',ttim(71),ttim(71)/ttim(2) 78 write (itime,100) 'barrier 2 : ',ttim(72),ttim(72)/ttim(2) 79 write (itime,100) 80 write (itime,100) 'blocs elmmfg: ',ttim(80),ttim(80)/ttim(2) 81 write (itime,100) 'blocs itrres: ',ttim(81),ttim(81)/ttim(2) 82 83 write (itime,100) 84 write (itime,100) 'Temps min/max:' 85 write (itime,100) 86 write (itime,101) '1 :', MINVAL(timeg(1 ,:)), MAXVAL(timeg(1 ,:)) 87 write (itime,101) '2 :', MINVAL(timeg(2 ,:)), MAXVAL(timeg(2 ,:)) 88 write (itime,101) '3 :', MINVAL(timeg(3 ,:)), MAXVAL(timeg(3 ,:)) 89 write (itime,101) '4 :', MINVAL(timeg(4 ,:)), MAXVAL(timeg(4 ,:)) 90 write (itime,101) '5 :', MINVAL(timeg(5 ,:)), MAXVAL(timeg(5 ,:)) 91 write (itime,101) '6 :', MINVAL(timeg(6 ,:)), MAXVAL(timeg(6 ,:)) 92 write (itime,101) '20:', MINVAL(timeg(20,:)), MAXVAL(timeg(20,:)) 93 write (itime,101) '21:', MINVAL(timeg(21,:)), MAXVAL(timeg(21,:)) 94 write (itime,101) '22:', MINVAL(timeg(22,:)), MAXVAL(timeg(22,:)) 95 write (itime,101) '23:', MINVAL(timeg(23,:)), MAXVAL(timeg(23,:)) 96 write (itime,101) '24:', MINVAL(timeg(24,:)), MAXVAL(timeg(24,:)) 97 write (itime,101) '25:', MINVAL(timeg(25,:)), MAXVAL(timeg(25,:)) 98 write (itime,101) '26:', MINVAL(timeg(26,:)), MAXVAL(timeg(26,:)) 99 write (itime,101) '27:', MINVAL(timeg(27,:)), MAXVAL(timeg(27,:)) 100 write (itime,101) '28:', MINVAL(timeg(28,:)), MAXVAL(timeg(28,:)) 101 write (itime,101) '29:', MINVAL(timeg(29,:)), MAXVAL(timeg(29,:)) 102 write (itime,101) '30:', MINVAL(timeg(30,:)), MAXVAL(timeg(30,:)) 103 write (itime,101) '40:', MINVAL(timeg(40,:)), MAXVAL(timeg(40,:)) 104 write (itime,101) '42:', MINVAL(timeg(42,:)), MAXVAL(timeg(42,:)) 105 write (itime,101) '50:', MINVAL(timeg(50,:)), MAXVAL(timeg(50,:)) 106 write (itime,101) '55:', MINVAL(timeg(55,:)), MAXVAL(timeg(55,:)) 107 write (itime,101) '60:', MINVAL(timeg(60,:)), MAXVAL(timeg(60,:)) 108 write (itime,101) '61:', MINVAL(timeg(61,:)), MAXVAL(timeg(61,:)) 109 write (itime,101) '62:', MINVAL(timeg(62,:)), MAXVAL(timeg(62,:)) 110 write (itime,101) '64:', MINVAL(timeg(64,:)), MAXVAL(timeg(64,:)) 111 write (itime,101) '66:', MINVAL(timeg(66,:)), MAXVAL(timeg(66,:)) 112 write (itime,101) '67:', MINVAL(timeg(67,:)), MAXVAL(timeg(67,:)) 113 write (itime,101) '68:', MINVAL(timeg(68,:)), MAXVAL(timeg(68,:)) 114 write (itime,101) '71:', MINVAL(timeg(71,:)), MAXVAL(timeg(71,:)) 115 write (itime,101) '72:', MINVAL(timeg(72,:)), MAXVAL(timeg(72,:)) 116 write (itime,101) '80:', MINVAL(timeg(80,:)), MAXVAL(timeg(80,:)) 117 write (itime,101) '81:', MINVAL(timeg(81,:)), MAXVAL(timeg(81,:)) 118 119 write (itime,100) 120 write (itime,100) 'Temps detail:' 121 write (itime,100) 122 write (itime,100) 'Tcore-cpu: ',timeg(1 ,:) 123 write (itime,100) 'Tcore-wc : ',timeg(2 ,:) 124 write (itime,100) 'local : ',timeg(3 ,:) 125 write (itime,100) 'global : ',timeg(4 ,:) 126 write (itime,100) 'commu : ',timeg(5 ,:) 127 write (itime,100) 'e3 : ',timeg(6 ,:) 128 write (itime,100) 'e3ivar : ',timeg(20,:) 129 write (itime,100) 'e3mtrx : ',timeg(21,:) 130 write (itime,100) 'e3conv : ',timeg(22,:) 131 write (itime,100) 'e3visc : ',timeg(23,:) 132 write (itime,100) 'e3LS : ',timeg(24,:) 133 write (itime,100) 'e3tau : ',timeg(25,:) 134 write (itime,100) 'e3eig1 : ',timeg(26,:) 135 write (itime,100) 'e3eig2 : ',timeg(27,:) 136 write (itime,100) 'e3juel : ',timeg(28,:) 137 write (itime,100) 'e3assm : ',timeg(29,:) 138 write (itime,100) 'e3bdg : ',timeg(30,:) 139 write (itime,100) 'e3b : ',timeg(40,:) 140 write (itime,100) 'e3nref : ',timeg(42,:) 141 write (itime,100) 'bc : ',timeg(50,:) 142 write (itime,100) 'vy : ',timeg(55,:) 143 write (itime,100) 'getdmc : ',timeg(60,:) 144 write (itime,100) 'sumgat-wa: ',timeg(61,:) 145 write (itime,100) 'sumgat-wo: ',timeg(62,:) 146 write (itime,100) 'gerbar : ',timeg(64,:) 147 write (itime,100) 'sponge : ',timeg(66,:) 148 write (itime,100) 'rstat-wai: ',timeg(67,:) 149 write (itime,100) 'rstat-wor: ',timeg(68,:) 150 write (itime,100) 'barrier 1: ',timeg(71,:) 151 write (itime,100) 'barrier 2: ',timeg(72,:) 152 write (itime,100) 'bl-elmmfg: ',timeg(80,:) 153 write (itime,100) 'bl-itrres: ',timeg(81,:) 154 155 close (itime) 156 157 endif 158 159100 format (1X,A,G14.6,F9.5) 160101 format (1X,A,G14.6,G14.6) 161 162 return 163 end 164