[cig-commits] r18274 - in seismo/2D/SPECFEM2D/trunk: EXAMPLES/Tape2007_kernel EXAMPLES/Tromp2005_kernel doc/USER_MANUAL src/meshfem2D src/shared src/specfem2D
danielpeter at geodynamics.org
danielpeter at geodynamics.org
Thu Apr 21 16:54:38 PDT 2011
Author: danielpeter
Date: 2011-04-21 16:54:38 -0700 (Thu, 21 Apr 2011)
New Revision: 18274
Modified:
seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/adj_seismogram_Tape2007.f90
seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/process.sh
seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/adj_seismogram_Tromp2005.f90
seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/process.sh
seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.pdf
seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.tex
seismo/2D/SPECFEM2D/trunk/src/meshfem2D/meshfem2D.F90
seismo/2D/SPECFEM2D/trunk/src/meshfem2D/part_unstruct.F90
seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_source_file.f90
seismo/2D/SPECFEM2D/trunk/src/shared/adj_seismogram.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/check_stability.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/checkgrid.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_arrays_source.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_energy.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_pressure.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_vector_field.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/enforce_acoustic_free_surface.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/get_MPI.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/gmat01.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/initialize_simulation.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/invert_mass_matrix.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_force.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_moment_tensor.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_assemble_MPI.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_initialfield.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_source_time_function.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_external_model.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/save_openDX_jacobian.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/set_sources.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/setup_sources_receivers.f90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/sort_array_coordinates.F90
seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
Log:
uses directory SEM/ for adjoint sources; removes trailing spaces from source code files
Modified: seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/adj_seismogram_Tape2007.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/adj_seismogram_Tape2007.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/adj_seismogram_Tape2007.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -119,7 +119,7 @@
print*,comp(icomp)
- filename = 'OUTPUT_FILES/'//trim(station_name(irec))//'.AA.'// comp(icomp) // '.adj'
+ filename = 'SEM/'//trim(station_name(irec))//'.AA.'// comp(icomp) // '.adj'
open(unit = 11, file = trim(filename))
time_window(:) = 0.d0
@@ -170,7 +170,7 @@
enddo
print*,'*************************'
- print*,'The input files (S****.AA.BHX/BHY/BHZ.adj) needed to run the adjoint simulation are in OUTPUT_FILES'
+ print*,'The input files (S****.AA.BHX/BHY/BHZ.adj) needed to run the adjoint simulation are in SEM'
print*,'*************************'
end program adj_seismogram
Modified: seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/process.sh
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/process.sh 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tape2007_kernel/process.sh 2011-04-21 23:54:38 UTC (rev 18274)
@@ -18,6 +18,7 @@
mkdir -p OUTPUT_FILES
mkdir -p DATA
+mkdir -p SEM
# sets up local DATA/ directory
cd DATA/
Modified: seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/adj_seismogram_Tromp2005.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/adj_seismogram_Tromp2005.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/adj_seismogram_Tromp2005.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -119,7 +119,7 @@
print*,comp(icomp)
- filename = 'OUTPUT_FILES/'//trim(station_name(irec))//'.AA.'// comp(icomp) // '.adj'
+ filename = 'SEM/'//trim(station_name(irec))//'.AA.'// comp(icomp) // '.adj'
open(unit = 11, file = trim(filename))
time_window(:) = 0.d0
@@ -170,7 +170,7 @@
enddo
print*,'*************************'
- print*,'The input files (S****.AA.BHX/BHY/BHZ.adj) needed to run the adjoint simulation are in OUTPUT_FILES'
+ print*,'The input files (S****.AA.BHX/BHY/BHZ.adj) needed to run the adjoint simulation are in SEM'
print*,'*************************'
end program adj_seismogram
Modified: seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/process.sh
===================================================================
--- seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/process.sh 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/EXAMPLES/Tromp2005_kernel/process.sh 2011-04-21 23:54:38 UTC (rev 18274)
@@ -18,6 +18,7 @@
mkdir -p OUTPUT_FILES
mkdir -p DATA
+mkdir -p SEM
# sets up local DATA/ directory
cd DATA/
Modified: seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.pdf
===================================================================
--- seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.pdf 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.pdf 2011-04-21 23:54:38 UTC (rev 18274)
@@ -5805,7 +5805,7 @@
Ä=âvèÝ{w=»0¶®OâÏ(îKý
û½$Ù6¥/3ϺÃ#
Yø\ ¼Í=×?*çãl:ì-P]ók±ÚìVå{=Xt
-0úfÈÓ?¶/ L÷ç¤" ¹GËÔÍÎ[~ý) B&|Tè8OdÎ
+0úfÈÓ?¶/ L÷ç¤" ¹GËÔÍÎ[~ý) æFÂ*}8ddÏ
endstream
endobj
207 0 obj <<
@@ -14578,24 +14578,24 @@
/ProcSet [ /PDF /Text ]
>> endobj
636 0 obj <<
-/Length 1704
+/Length 1719
/Filter /FlateDecode
>>
stream
-xÚ½XmoÛ6þÞ_áöP³"ERRH×ÍÖ6Aãtm×Á #:ÖfK^e¿~G%Û²ì8é0}!EòîÈ{yîÈ×g/θ?`Ád>Ø@úø4LâÁoÃ*¯t13á
-Åè÷ÉÏHÁIÔPx1HH9ÄdIZ!ÁU²ªªJ²´lI)'>Ì ùH*©çy÷ÙzÃ;dReØf³J%)öÏ4©´¢Ó2©CñWRÝãà/#&°o*©^6Òù "dÒ§páÆ&%îÑXüµ£°gÅá¯Êö`/
-kdÆcJI$³W?¢TlJõIÀB8¹]ruþþúÝÉäüâÃtòåòt4 ü6´gÏcGrÄñrN>NÏ.>þzòñÍRµ&ß+)d#©ÔI¹Êªû\?xPµß<áÝJc1cÏÚÚR×Ó©¶ÃqRæKu£WÚzL}ó<¦q¹ÍÌeýºYm¬ÄøI_1T#2«PÔØbø!«ôKèroÌù×æ±mu!+ëÒJ¦¡q¤4·º*q*©Cñfq8Ìì¶P+¾ÉBßàâãèÝB§Ø+´ô§[yÀ"»¶bh¯÷í(¢Ó-WiÜg~I`½ÖãU~@/;zºÉV³$µÑä¢.·ÂÏÅ^'
.Kuëâ_å¹VE?
-@ .jÔyíÐÈøÅR£Yo4èÃF.\ÏWyVTª®¬®:eó#<cFû£çüVùR?o¡¢³½TeÜàÏ*ã«Oç[{xiöø²GÙÞ¶âÔ¬ÌÙÔ Î²ªÊV,å$à^0e×a8Ø#` çÉBNz^¡~pÃá;b¸Ox×:bävÑÈÀËèäDûÑA9U£/ Üá Rüð°ÿû"Y7J$}e|J×±Ì$
-ÈÑ'¥[ONÈë·I©W1rvRÿÆ_[ÆÝàç2?κò¹ûFKu'tÔf1¼?ß^º@¼áSÁX2¼ÞÜ4[ú8
-úúQhªç1¤ ²¡×&¶WÓË)NénÕó>>¶@qRÈ}\3 Y» ê;®;å±<b½¬TÕÃÊÆPÊ51÷B¹Ñµ©Q_jÍ@½ùËæN©8
-¯ÞR3¬7ÐifTjÀñGo7·c/ [±ÌÄÚ99
-9@â¶Q
-÷×ú7huVVª8æ¼=éð¨e£ÓxýèFDAq~ÈÀSc¬6P3ÐA8®¦õjfJ
-3l5-lÓÚ
-}êèm3DYêA¾Íá'mÆçAh8i cÿèÂõ¬nͬn *WBºiñÏ)wbùQÙ¤`u&µãóÈàQáJ©ÔêP½0 w¯5ƸñýàÆ·Q¶Ô³B!<P)Avñéwoáë¾-¬áÂxÏ°1º¾£¡8dlt©C lvê6QÒ$ Èß=RxàH»'úrôhS_Á®®Þ®w·Ò«Y¡R¬íúb¦ ÙpW¿ãªj¡*ìÝgµ#LKì¹[SÙRZ7Ñ]ÙdêþxxyªÒ>R?J ÿÝn¸×h\>xg`Aô½8.Ð%hï¦iló¬j@Ðü{]´èCÐÔÑæêëÉåõdzvþîôêEï-'âwÊ817¹¬0 ,ða7p \X¿»¤ZÛ³Shû¢ÝA§µZ
-#"¥tæÊÊn:ë1ñõBÒ¢ØN»/
jq¾6J¬&°iQP!GÝ%sÑu%¼üB¯¨ÓõpOÍؾӸDÕ5¨ß}ôyUO êvù^ýipÇrXÖ
í
-ÎÀòηYé2®Y»¾lUÖÐxHøeu«"ÁéÀ]aÂ({ÖØÝàØ´hGí
-Ùí¤ züPïênýWbHËöc߬¼±ÿåml®åáÇ1û~àD]<öÁàè÷^ÖËTåå"«¦Å"þ©ò\MWõ¯ãõ´Ge»Üò©ZBu=éJ!ÃööÞðÇàLæuÏN'Ïþ3´¤
+xÚ½XYsÛ6~ϯУÔâ$tÆiìÛ8öÄr¤éh ²ØH$¤êº¿¾,H]|¤^Ø]`owñzôìÅà=¥ì¦½õÓ¨7Jz¿õé¢6å`ÈdÐßG?#
aRKô"&Hpü§Yéb9×ugUKJáB1O*C`ÄT:Ò úoó
+ú·È¤ÎñOjf8>I³´6^ɪ´N-Åi}¿ìù©ìgfÞH½Ä)+2"$ï
+#L)<%¡ù^ÆÏ4/o-]&8Qµ{iY#3ÑRJbé½ú¥ªp]*'!àænËåéÙÕ»£ÑéùûñèóÅñ`¨@ø+üÐ3=9Êsôñx|rþá×£o6º\ò½¢P5*V¼¾+̽á¬%üÈàÖZTYGÎöðôy9ýz梤U1××fa×ÁÒ× `fT,À\ÎagøMLZ?éà+ûºudRåËò5äRößçµy CôÓ©3¿õZ¶©.dEÃþ²ridi SW¸ÖÏaÀD³9êe~Sê._çei®qsqövf2F'ivË<`QÄ][1ÅH¼×ûvMSÁé·ë,é2¿"R²NGëð*RÂÕ®óÅ$Í\4ù¨Ëðó±áMabaªJßøø×EatYá P5ÅÒ£õ¹GsÞhÑ
$}¸.¼¬u]ù²Þ"¬?2°ftõ¿ô¢ç-TlÀÌuU§×øçZWÍÎáåÇõû<¼²g|Ù¡ì`SqzRåådì'y]çGHÃv
+¯?Ø[e×QÔ[[#` ïÉRAÃæfZ£~
+#;b'bÛ¶ÄéͬÑ'ÉàñA9u^ $Üá RxHD´
ÿû"Ù4¼J}e8%2ز̥[$ÃÈÒ
+GGäõÛO¤29{©ÿã/-ãíà2?îùòùûÆØËÌVèèõb1x¾½ªL>
x->Ã1¦(±d¹i6ôqXôåqä
+ÕRJH Ù(hÛûËÑñE¯t¿ëyW ø
+ä..Ö
+D¬ÝPw]×ßò¡<3¯uÝÁÊÆH©¡à¡ÜjËÙÔª¯Èmµf¡Þþ˧^©¸o¹¡fØo¡Ó®èÌãÎÞ¬%nϪ¶â0"-$wr ÄM£Z,ï¸/ú7luVÕº|È};Ò-qËÆdÉ>ûѵ"âxÄÀS¬6P30 at 8¡êgËÅÄvÚi¾pLWh7ô§wYÌågù¶?Y3?ÝÎ
+0÷·)ýÈéÖÁé r¤ÿ¼rGUM
+æT®2©vè,D
+WJÀ VºìèiÖ;à&öØDM8RÇT
DxO¥Ù
Óï>Â}G$\Á
õΰ±º¾¢¡dln'[@ØìÔ!8m£¤ûJ
+ï^):p¥Ý}~ðhS_Á©.ß®N·0I©3¬íº¯b Ù_¿ã®z¦kÝåKOÎç8ò]SÕRÆ4Ñ}ÙdëñxxyªÒ>R8J [L~·~Þ 1ïµá¿ô N}FïÄámÀ¬moùM³.ø"BÕJiÇg/º°<$ÁªNÒ&ä8#h|£X±]]^ÚÇ
+Aá`ÐÎ\ÿnÓzfGlÏYl¯ÉÕª-Û,fÌ(&Ju[W
¹}hÏ©¸·ù[[ïÔ»{SÐSÌ×ìÓ4WNøµ&²°ý-jCúà ó0å2[µ{êÇöÍÆ'æhåÛ@÷±Z+GùæÙÎô7A<RýjYºQØ`Ì!o¬xÛ>ûÚ½+ÝØ]ÎÐxIø;ÉY¢ËCß4ÃU>5p¸Æ)t)ÒͺnÙ¤§ xÔzýùÕèâj4>9}w|ù¢³¹÷û7=IWW²OÆû±ïWÞÉØÿòN6ÕóêðC{Kð¢Îûxðà·û^¼Ö«LÕ,¯Çå,ÓE¡Çå^«å0Êv¹c=J{<1µFm'ßÁp(:h¬yrvß³ãѳ ýÖ¦D
endstream
endobj
635 0 obj <<
@@ -14619,17 +14619,17 @@
/ProcSet [ /PDF /Text ]
>> endobj
640 0 obj <<
-/Length 758
+/Length 746
/Filter /FlateDecode
>>
stream
-xÚµU[OÛ0~çWD<%Scâ8vDz(b íÂ4e©»%v?;¶K¡ BÖÛçø\¾óç8;8:%ÄÉÖN:1Jlå|sßͯ²OâÀÅÀó1 Üùóåâ2Ó×7sBèfååµ÷=;?:¢N@b'Ð>!V6! rü0Hë6¬Øx>7T-R·ÛP}R7¬ÊG}ZU_2øíÁÀ¥
-§ekîòÕË»¼5Ë{F.-=èu¶ÚtÏICÛóB¬î`yçÑ#ØI5".ã&V[0ÇZ4UÞiw&©ïRQu!H1Ö¢ÈK
-eIwBÍôY·Q÷ÕµZæFî$|àÍîfLe,7ð> GU#ü0iK mó¾côMe bì®J:@¨bsÑÑüTYH²Æò~hj»
-C,)®-bèZT¢¢¼3Eæ«;Á¸1iYÕ¹JÉºÛ Æ¢¯kÑMÎY+ºFÔ
-
-ÛAÑu÷#{¢Z¢÷¬-DoÝçUÍø/°mÎh¢m$¡ûÀÊR¯8¥+wP#Û(±dæÁÁ %ìÄàáüü
-ªBgGæsp|öHTFB01²îgc ÄO^¿þËTø w
è~Ptýk__Ë ´Þ;¡ñjYË©¥Jjø~i$ ËÏoÅ9ÝB¾'û DÒÎÄXÞdW7ÙÓÅÅÉõÑHFI `Zë!æfr×ZØ)¸ë[Cã¦ç\²ÐÕHÅÒz'-%÷-ó'ÅÄøÂ$r¢qd $EÓ$Eo"iÂhË ûrm_pù격}ôä_nk(DUNívm+Ç¥ÏÒhi"¿/áó®ÿçR'$&&½i gÐпE»} ÷߶d ÇO
+xÚµUÛNÜ0}ç+"jcb;vÇ¥*Tê
>¤YÓ5Mì(_;¶
MjÕ}X_ÆsæsïÓÔË@Fõò[/A^S/_yßý÷'Ë«üèS"ù!¡¿üpvyzÍëÓóÏÐÏO//®ùÙÁqo9I
+"xñ >ã
1Æ b/D:íaÍËubúEËô$óû53;MËë¢}4»µ\
+7ß|Ö
+Vuö®X½¼».:;½`ì³*¾,yÏYgî8iY×°²ç"úQwJü
2cêsacu%·yÜʶ.zãΦ ìýS*wä
¸eQ*+¶jaöúµ¾¯g¼3caÇýo"ñÅÝëÕî[ì`H"D1È¢D) иz.ÅDÝt¦) öÜUÅF
+ul!{¶)jB¨î#í!¢$E¾1ÖCOjY3Ñ[ÅêNrat¼ªB§d®ä&¨=14lí¢¼}+Í«Ïhè{&ÑÛÑ%Ñ{ÞrpîºáâØgÀ£T)òxU`leX£ÉkTq§Nìc?xd¢D<î¿S¿Ñ0È ô¶L`¹'_be¢(`ç~1 ÀÉDüôø»á¿Î
Ï ¦Ðy×î& UCgñ¿fðíµóÞKSÌêZ¦¥¤\Fññ¬ñV¼UÝ-Õ{² § Vç£óDR|´¡b«w
mØ[3Òõ×Zñß
+Uo;¡ÄçôiG-Îf%[3*ÉKVO®xBPK &&~4SâMÝÝ{µiy)ÔûiP3÷Ô©¿ÂA(eÝHÁÜòÖ¦¥TÑ$Ô,U_ô¼ÖÿêLP&t¶
+ðlà7µÁóZö·lw/éÛð½£|ïÛ7
endstream
endobj
639 0 obj <<
@@ -16520,10 +16520,10 @@
>> endobj
744 0 obj <<
/Author()/Title()/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.3)/Keywords()
-/CreationDate (D:20110411200743+02'00')
-/ModDate (D:20110411200743+02'00')
+/CreationDate (D:20110421193831-04'00')
+/ModDate (D:20110421193831-04'00')
/Trapped /False
-/PTEX.Fullbanner (This is pdfTeX using libpoppler, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
+/PTEX.Fullbanner (This is pdfTeX, Version 3.141592-1.40.3-2.2 (Web2C 7.5.6) kpathsea version 3.5.6)
>> endobj
xref
0 745
@@ -16534,55 +16534,55 @@
0000000000 00000 f
0000000015 00000 n
0000514890 00000 n
-0001482560 00000 n
+0001482563 00000 n
0000000060 00000 n
0000000092 00000 n
0000534865 00000 n
-0001482488 00000 n
+0001482491 00000 n
0000000139 00000 n
0000000170 00000 n
0000534921 00000 n
-0001482415 00000 n
+0001482418 00000 n
0000000218 00000 n
0000000248 00000 n
0000538283 00000 n
-0001482328 00000 n
+0001482331 00000 n
0000000294 00000 n
0000000330 00000 n
0000900815 00000 n
-0001482203 00000 n
+0001482206 00000 n
0000000376 00000 n
0000000412 00000 n
0000900867 00000 n
-0001482129 00000 n
+0001482132 00000 n
0000000460 00000 n
0000000503 00000 n
0000969828 00000 n
-0001482055 00000 n
+0001482058 00000 n
0000000551 00000 n
0000000617 00000 n
0001322472 00000 n
-0001481930 00000 n
+0001481933 00000 n
0000000663 00000 n
0000000713 00000 n
0001337226 00000 n
-0001481856 00000 n
+0001481859 00000 n
0000000761 00000 n
0000000835 00000 n
0001345602 00000 n
-0001481782 00000 n
+0001481785 00000 n
0000000883 00000 n
0000000931 00000 n
-0001349194 00000 n
-0001481657 00000 n
+0001349209 00000 n
+0001481660 00000 n
0000000977 00000 n
0000001017 00000 n
-0001349246 00000 n
-0001481596 00000 n
+0001349261 00000 n
+0001481599 00000 n
0000001065 00000 n
0000001128 00000 n
-0001376745 00000 n
-0001481521 00000 n
+0001376748 00000 n
+0001481524 00000 n
0000001175 00000 n
0000001211 00000 n
0000001403 00000 n
@@ -16591,7 +16591,7 @@
0000001262 00000 n
0000487618 00000 n
0000487669 00000 n
-0001480811 00000 n
+0001480814 00000 n
0000005035 00000 n
0000005223 00000 n
0000005365 00000 n
@@ -16736,8 +16736,8 @@
0000488233 00000 n
0000488122 00000 n
0000487787 00000 n
-0001480105 00000 n
-0001480278 00000 n
+0001480108 00000 n
+0001480281 00000 n
0000489212 00000 n
0000489044 00000 n
0000488318 00000 n
@@ -16882,62 +16882,62 @@
0000495455 00000 n
0000492367 00000 n
0000514837 00000 n
-0001479934 00000 n
+0001479937 00000 n
0000497027 00000 n
0000497413 00000 n
0000500257 00000 n
0000506291 00000 n
0000507367 00000 n
-0001479336 00000 n
+0001479339 00000 n
0000509367 00000 n
0000512804 00000 n
-0001356834 00000 n
-0001357017 00000 n
-0001366449 00000 n
-0001357078 00000 n
-0001366693 00000 n
-0001366388 00000 n
-0001375036 00000 n
-0001356408 00000 n
-0001371396 00000 n
-0001356530 00000 n
-0001361633 00000 n
-0001361877 00000 n
-0001360963 00000 n
-0001361694 00000 n
-0001371457 00000 n
-0001370908 00000 n
-0001361816 00000 n
-0001356469 00000 n
-0001356773 00000 n
-0001361450 00000 n
-0001361268 00000 n
-0001361329 00000 n
-0001361207 00000 n
-0001361511 00000 n
-0001371091 00000 n
-0001370421 00000 n
-0001374548 00000 n
-0001361390 00000 n
-0001361024 00000 n
-0001361146 00000 n
-0001374487 00000 n
-0001362121 00000 n
-0001365962 00000 n
-0001374914 00000 n
-0001366083 00000 n
-0001356895 00000 n
-0001366327 00000 n
-0001366144 00000 n
-0001366205 00000 n
-0001361938 00000 n
-0001375097 00000 n
-0001374792 00000 n
-0001365901 00000 n
-0001370786 00000 n
-0001356590 00000 n
-0001356651 00000 n
-0001374670 00000 n
+0001356837 00000 n
+0001357020 00000 n
+0001366452 00000 n
+0001357081 00000 n
+0001366696 00000 n
+0001366391 00000 n
+0001375039 00000 n
+0001356411 00000 n
+0001371399 00000 n
+0001356533 00000 n
+0001361636 00000 n
+0001361880 00000 n
+0001360966 00000 n
+0001361697 00000 n
+0001371460 00000 n
+0001370911 00000 n
+0001361819 00000 n
+0001356472 00000 n
+0001356776 00000 n
+0001361453 00000 n
+0001361271 00000 n
+0001361332 00000 n
+0001361210 00000 n
+0001361514 00000 n
+0001371094 00000 n
+0001370424 00000 n
+0001374551 00000 n
+0001361393 00000 n
+0001361027 00000 n
+0001361149 00000 n
+0001374490 00000 n
+0001362124 00000 n
+0001365965 00000 n
+0001374917 00000 n
+0001366086 00000 n
+0001356898 00000 n
+0001366330 00000 n
+0001366147 00000 n
+0001366208 00000 n
+0001361941 00000 n
+0001375100 00000 n
+0001374795 00000 n
+0001365904 00000 n
+0001370789 00000 n
+0001356593 00000 n
+0001356654 00000 n
+0001374673 00000 n
0000520117 00000 n
0000520424 00000 n
0000520578 00000 n
@@ -17033,41 +17033,41 @@
0000517903 00000 n
0000515052 00000 n
0000534812 00000 n
-0001480628 00000 n
+0001480631 00000 n
0000520271 00000 n
0000521684 00000 n
0000533371 00000 n
-0001366023 00000 n
-0001366510 00000 n
-0001366571 00000 n
-0001366632 00000 n
-0001365840 00000 n
-0001365779 00000 n
-0001357139 00000 n
-0001374853 00000 n
-0001374426 00000 n
-0001371213 00000 n
-0001361085 00000 n
-0001361999 00000 n
-0001361572 00000 n
-0001356956 00000 n
-0001371335 00000 n
-0001374609 00000 n
-0001361755 00000 n
-0001371152 00000 n
-0001370847 00000 n
-0001362060 00000 n
-0001370604 00000 n
-0001370664 00000 n
-0001370482 00000 n
-0001370725 00000 n
-0001374975 00000 n
-0001366266 00000 n
-0001370360 00000 n
-0001370969 00000 n
-0001366754 00000 n
-0001371030 00000 n
-0001370543 00000 n
+0001366026 00000 n
+0001366513 00000 n
+0001366574 00000 n
+0001366635 00000 n
+0001365843 00000 n
+0001365782 00000 n
+0001357142 00000 n
+0001374856 00000 n
+0001374429 00000 n
+0001371216 00000 n
+0001361088 00000 n
+0001362002 00000 n
+0001361575 00000 n
+0001356959 00000 n
+0001371338 00000 n
+0001374612 00000 n
+0001361758 00000 n
+0001371155 00000 n
+0001370850 00000 n
+0001362063 00000 n
+0001370607 00000 n
+0001370667 00000 n
+0001370485 00000 n
+0001370728 00000 n
+0001374978 00000 n
+0001366269 00000 n
+0001370363 00000 n
+0001370972 00000 n
+0001366757 00000 n
+0001371033 00000 n
+0001370546 00000 n
0000537330 00000 n
0000537483 00000 n
0000537637 00000 n
@@ -17077,8 +17077,8 @@
0000535088 00000 n
0000538230 00000 n
0000538028 00000 n
-0001480926 00000 n
-0001371274 00000 n
+0001480929 00000 n
+0001371277 00000 n
0000538971 00000 n
0000538806 00000 n
0000538433 00000 n
@@ -17090,7 +17090,7 @@
0000539069 00000 n
0000900762 00000 n
0000900923 00000 n
-0001479763 00000 n
+0001479766 00000 n
0000903481 00000 n
0000969884 00000 n
0000903369 00000 n
@@ -17124,8 +17124,8 @@
0001325820 00000 n
0001322745 00000 n
0001327462 00000 n
-0001479480 00000 n
-0001356712 00000 n
+0001479483 00000 n
+0001356715 00000 n
0001337050 00000 n
0001336685 00000 n
0001336841 00000 n
@@ -17133,17 +17133,17 @@
0001329646 00000 n
0001327651 00000 n
0001336997 00000 n
-0001479622 00000 n
+0001479625 00000 n
0001337112 00000 n
0001337169 00000 n
-0001481043 00000 n
+0001481046 00000 n
0001333915 00000 n
0001334126 00000 n
0001334182 00000 n
0001334576 00000 n
0001334598 00000 n
0001334879 00000 n
-0001374731 00000 n
+0001374734 00000 n
0001345241 00000 n
0001345395 00000 n
0001339850 00000 n
@@ -17161,122 +17161,122 @@
0001346647 00000 n
0001345854 00000 n
0001347093 00000 n
-0001349302 00000 n
-0001349029 00000 n
+0001349317 00000 n
+0001349044 00000 n
0001347244 00000 n
-0001349141 00000 n
-0001350461 00000 n
-0001350239 00000 n
-0001349400 00000 n
-0001350351 00000 n
-0001350404 00000 n
-0001351726 00000 n
-0001352064 00000 n
-0001352345 00000 n
-0001351578 00000 n
-0001350572 00000 n
-0001352235 00000 n
-0001352288 00000 n
-0001351896 00000 n
-0001353016 00000 n
-0001352794 00000 n
-0001352443 00000 n
-0001352906 00000 n
-0001352959 00000 n
-0001481160 00000 n
-0001357200 00000 n
-0001356186 00000 n
-0001353101 00000 n
-0001356298 00000 n
-0001356351 00000 n
-0001480451 00000 n
-0001362180 00000 n
-0001360798 00000 n
-0001357298 00000 n
-0001360910 00000 n
-0001366815 00000 n
-0001365614 00000 n
-0001362278 00000 n
-0001365726 00000 n
-0001371518 00000 n
-0001370195 00000 n
-0001366913 00000 n
-0001370307 00000 n
-0001375158 00000 n
-0001374261 00000 n
-0001371616 00000 n
-0001374373 00000 n
-0001376854 00000 n
-0001376580 00000 n
-0001375256 00000 n
-0001376692 00000 n
-0001376797 00000 n
-0001481277 00000 n
-0001478771 00000 n
-0001376952 00000 n
-0001377848 00000 n
-0001377889 00000 n
-0001378000 00000 n
-0001378115 00000 n
-0001378310 00000 n
-0001378669 00000 n
-0001379060 00000 n
-0001380034 00000 n
-0001380511 00000 n
-0001382775 00000 n
-0001383008 00000 n
-0001385260 00000 n
-0001385502 00000 n
-0001386940 00000 n
-0001387179 00000 n
-0001395877 00000 n
-0001396151 00000 n
-0001413208 00000 n
-0001413675 00000 n
-0001429427 00000 n
-0001429868 00000 n
-0001450222 00000 n
-0001450881 00000 n
-0001462030 00000 n
-0001462347 00000 n
-0001478323 00000 n
-0001481354 00000 n
-0001481447 00000 n
-0001482669 00000 n
-0001482859 00000 n
-0001483043 00000 n
-0001483266 00000 n
-0001483500 00000 n
-0001483709 00000 n
-0001483927 00000 n
-0001484151 00000 n
-0001484378 00000 n
-0001484589 00000 n
-0001484817 00000 n
-0001485035 00000 n
-0001485241 00000 n
-0001485447 00000 n
-0001485653 00000 n
-0001485891 00000 n
-0001486099 00000 n
-0001486273 00000 n
-0001486443 00000 n
-0001486609 00000 n
-0001486771 00000 n
-0001486966 00000 n
-0001487162 00000 n
-0001487279 00000 n
-0001487398 00000 n
-0001487511 00000 n
-0001487607 00000 n
-0001487706 00000 n
-0001487744 00000 n
-0001487954 00000 n
+0001349156 00000 n
+0001350464 00000 n
+0001350242 00000 n
+0001349415 00000 n
+0001350354 00000 n
+0001350407 00000 n
+0001351729 00000 n
+0001352067 00000 n
+0001352348 00000 n
+0001351581 00000 n
+0001350575 00000 n
+0001352238 00000 n
+0001352291 00000 n
+0001351899 00000 n
+0001353019 00000 n
+0001352797 00000 n
+0001352446 00000 n
+0001352909 00000 n
+0001352962 00000 n
+0001481163 00000 n
+0001357203 00000 n
+0001356189 00000 n
+0001353104 00000 n
+0001356301 00000 n
+0001356354 00000 n
+0001480454 00000 n
+0001362183 00000 n
+0001360801 00000 n
+0001357301 00000 n
+0001360913 00000 n
+0001366818 00000 n
+0001365617 00000 n
+0001362281 00000 n
+0001365729 00000 n
+0001371521 00000 n
+0001370198 00000 n
+0001366916 00000 n
+0001370310 00000 n
+0001375161 00000 n
+0001374264 00000 n
+0001371619 00000 n
+0001374376 00000 n
+0001376857 00000 n
+0001376583 00000 n
+0001375259 00000 n
+0001376695 00000 n
+0001376800 00000 n
+0001481280 00000 n
+0001478774 00000 n
+0001376955 00000 n
+0001377851 00000 n
+0001377892 00000 n
+0001378003 00000 n
+0001378118 00000 n
+0001378313 00000 n
+0001378672 00000 n
+0001379063 00000 n
+0001380037 00000 n
+0001380514 00000 n
+0001382778 00000 n
+0001383011 00000 n
+0001385263 00000 n
+0001385505 00000 n
+0001386943 00000 n
+0001387182 00000 n
+0001395880 00000 n
+0001396154 00000 n
+0001413211 00000 n
+0001413678 00000 n
+0001429430 00000 n
+0001429871 00000 n
+0001450225 00000 n
+0001450884 00000 n
+0001462033 00000 n
+0001462350 00000 n
+0001478326 00000 n
+0001481357 00000 n
+0001481450 00000 n
+0001482672 00000 n
+0001482862 00000 n
+0001483046 00000 n
+0001483269 00000 n
+0001483503 00000 n
+0001483712 00000 n
+0001483930 00000 n
+0001484154 00000 n
+0001484381 00000 n
+0001484592 00000 n
+0001484820 00000 n
+0001485038 00000 n
+0001485244 00000 n
+0001485450 00000 n
+0001485656 00000 n
+0001485894 00000 n
+0001486102 00000 n
+0001486276 00000 n
+0001486446 00000 n
+0001486612 00000 n
+0001486774 00000 n
+0001486969 00000 n
+0001487165 00000 n
+0001487282 00000 n
+0001487401 00000 n
+0001487514 00000 n
+0001487610 00000 n
+0001487709 00000 n
+0001487747 00000 n
+0001487957 00000 n
trailer
<< /Size 745
/Root 743 0 R
/Info 744 0 R
-/ID [<314944288BE15B5CF35557DACDA56CB3> <314944288BE15B5CF35557DACDA56CB3>] >>
+/ID [<2C4D59F05621CF644D917B1A4EE93959> <2C4D59F05621CF644D917B1A4EE93959>] >>
startxref
-1488285
+1488271
%%EOF
Modified: seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.tex
===================================================================
--- seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.tex 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/doc/USER_MANUAL/manual_SPECFEM2D.tex 2011-04-21 23:54:38 UTC (rev 18274)
@@ -674,7 +674,7 @@
put one component of the source to zero if needed.
The ouput files of \texttt{adj\_seismogram.f90} are \texttt{S****.AA.BHX.adj} and \texttt{S****.AA.BHZ.adj}, for P-SV waves (and
\texttt{S****.AA.BHY.adj}, for SH (membrane) waves). Note that you will need these three
-files (\texttt{S****.AA.BHX.adj}, \texttt{S****.AA.BHY.adj} and \texttt{S****.AA.BHZ.adj}) to be present in the \texttt{OUTPUT\_FILES/} directory
+files (\texttt{S****.AA.BHX.adj}, \texttt{S****.AA.BHY.adj} and \texttt{S****.AA.BHZ.adj}) to be present in the \texttt{SEM/} directory
together with the \texttt{absorb\_elastic\_****.bin} and \texttt{lastframe\_elastic.bin} files to be read
when running the adjoint simulation.\\
@@ -699,7 +699,7 @@
\item at the moment, adjoint simulations do not support anisotropy, attenuation, and viscous damping.
\item you will need \texttt{S****.AA.BHX.adj}, \texttt{S****.AA.BHY.adj} and \texttt{S****.AA.BHZ.adj}
-to be present in directory \texttt{OUTPUT\_FILES/} even if you are just running an acoustic or
+to be present in directory \texttt{SEM/} even if you are just running an acoustic or
poroelastic adjoint simulation.\\
\texttt{S****.AA.BHX.adj} is the only relevant component for an acoustic case.\\
\texttt{S****.AA.BHX.adj} and \texttt{S****.AA.BHZ.adj} are the only relevant components for a
Modified: seismo/2D/SPECFEM2D/trunk/src/meshfem2D/meshfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/meshfem2D/meshfem2D.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/meshfem2D/meshfem2D.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -762,20 +762,20 @@
!*****************************
! partitioning
!*****************************
-
+
! allocates & initializes partioning of elements
allocate(part(0:nelmnts-1))
part(:) = -1
-
+
if( nproc > 1 ) then
allocate(xadj_g(0:nelmnts))
- allocate(adjncy_g(0:MAX_NEIGHBORS*nelmnts-1))
+ allocate(adjncy_g(0:MAX_NEIGHBORS*nelmnts-1))
xadj_g(:) = 0
adjncy_g(:) = -1
endif
! construction of the graph
-
+
! if ngnod == 9, we work on a subarray of elements that represents the elements with four nodes (four corners) only
! because the adjacency of the mesh elements can be entirely determined from the knowledge of the four corners only
if ( ngnod == 9 ) then
Modified: seismo/2D/SPECFEM2D/trunk/src/meshfem2D/part_unstruct.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/meshfem2D/part_unstruct.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/meshfem2D/part_unstruct.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -346,7 +346,7 @@
! allocates memory for arrays
if( .not. allocated(nnodes_elmnts) ) allocate(nnodes_elmnts(0:nnodes-1))
if( .not. allocated(nodes_elmnts) ) allocate(nodes_elmnts(0:nsize*nnodes-1))
-
+
! initializes
xadj(:) = 0
adjncy(:) = 0
@@ -377,8 +377,8 @@
enddo
enddo
- ! sets adjacency (adjncy) and number of neighbors (xadj)
- ! according to ncommonnodes criteria
+ ! sets adjacency (adjncy) and number of neighbors (xadj)
+ ! according to ncommonnodes criteria
if ( connectivity >= ncommonnodes) then
is_neighbour = .false.
@@ -397,14 +397,14 @@
xadj(nodes_elmnts(k+j*nsize)) = xadj(nodes_elmnts(k+j*nsize)) + 1
if (xadj(nodes_elmnts(k+j*nsize)) > MAX_NEIGHBORS) &
stop 'ERROR : too much neighbours per element, modify the mesh.'
-
+
adjncy(nodes_elmnts(l+j*nsize)*MAX_NEIGHBORS &
+ xadj(nodes_elmnts(l+j*nsize))) = nodes_elmnts(k+j*nsize)
-
+
xadj(nodes_elmnts(l+j*nsize)) = xadj(nodes_elmnts(l+j*nsize)) + 1
if (xadj(nodes_elmnts(l+j*nsize))>MAX_NEIGHBORS) &
stop 'ERROR : too much neighbours per element, modify the mesh.'
-
+
endif
endif
enddo
@@ -598,7 +598,7 @@
is_elastic_el = .false.
endif
- ! looks at all neighbor elements
+ ! looks at all neighbor elements
do el_adj = xadj_g(el), xadj_g(el+1)-1
! sets neighbor material flag
if ( phi_material(num_material(adjncy_g(el_adj)+1)) < TINYVAL) then
@@ -611,7 +611,7 @@
is_acoustic_el_adj = .false.
is_elastic_el_adj = .false.
endif
- ! adds element if neighbor element lies in next parition
+ ! adds element if neighbor element lies in next parition
! and belongs to same material
if ( (part(adjncy_g(el_adj)) == num_part_bis) .and. &
(is_acoustic_el .eqv. is_acoustic_el_adj) .and. &
@@ -628,7 +628,7 @@
enddo
enddo
-
+
! stores element indices for elements from above search at each interface
num_interface = 0
num_edge = 0
@@ -1361,10 +1361,10 @@
allocate(xadj_l(0:nelmnts))
allocate(adjncy_l(0:MAX_NEIGHBORS*nelmnts-1))
-
+
is_acoustic(:) = .false.
is_elastic(:) = .false.
-
+
do i = 1, nb_materials
if (phi_material(i) >= 1.d0) then
is_acoustic(i) = .true.
@@ -1455,7 +1455,7 @@
is_acoustic(:) = .false.
is_poroelastic(:) = .false.
-
+
do i = 1, nb_materials
if (phi_material(i) >=1.d0) then
is_acoustic(i) = .true.
@@ -1611,7 +1611,7 @@
enddo
deallocate(xadj_l,adjncy_l)
-
+
end subroutine poro_elastic_repartitioning
Modified: seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_source_file.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_source_file.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/meshfem2D/read_source_file.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -120,7 +120,7 @@
call read_value_double_precision(IIN_SOURCE,IGNORE_JUNK,Mxz(i_source))
call read_value_double_precision(IIN_SOURCE,IGNORE_JUNK,factor(i_source))
- ! note: we will further process source info in solver,
+ ! note: we will further process source info in solver,
! here we just read in the given specifics and show them
print *
Modified: seismo/2D/SPECFEM2D/trunk/src/shared/adj_seismogram.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/shared/adj_seismogram.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/shared/adj_seismogram.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -119,7 +119,7 @@
print*,comp(icomp)
- filename = 'OUTPUT_FILES/'//trim(station_name(irec))//'.AA.'// comp(icomp) // '.adj'
+ filename = 'SEM/'//trim(station_name(irec))//'.AA.'// comp(icomp) // '.adj'
open(unit = 11, file = trim(filename))
time_window(:) = 0.d0
@@ -170,7 +170,7 @@
enddo
print*,'*************************'
- print*,'The input files (S****.AA.BHX/BHY/BHZ.adj) needed to run the adjoint simulation are in OUTPUT_FILES'
+ print*,'The input files (S****.AA.BHX/BHY/BHZ.adj) needed to run the adjoint simulation are in SEM'
print*,'*************************'
end program adj_seismogram
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/assemble_MPI.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -140,8 +140,8 @@
end do
do num_interface = 1, ninterface
-
- ! starts a blocking receive
+
+ ! starts a blocking receive
call MPI_recv ( buffer_recv_faces_scalar(1,num_interface), &
nibool_interfaces_acoustic(num_interface)+nibool_interfaces_elastic(num_interface)+&
nibool_interfaces_poroelastic(num_interface)+nibool_interfaces_poroelastic(num_interface), &
@@ -236,7 +236,7 @@
buffer_send_faces_vector_ac(:,:) = 0._CUSTOM_REAL
buffer_recv_faces_vector_ac(:,:) = 0._CUSTOM_REAL
tab_requests_send_recv_acoustic(:) = 0
-
+
! loops over acoustic interfaces only
do iinterface = 1, ninterface_acoustic
@@ -280,7 +280,7 @@
end do
-
+
! waits for MPI requests to complete (recv)
! each wait returns once the specified MPI request completed
do iinterface = 1, ninterface_acoustic
@@ -291,7 +291,7 @@
! assembles the array values
do iinterface = 1, ninterface_acoustic
- ! gets global interface index
+ ! gets global interface index
num_interface = inum_interfaces_acoustic(iinterface)
! loops over all interface points
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/check_stability.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/check_stability.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/check_stability.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -42,7 +42,7 @@
!
!========================================================================
-
+
subroutine check_stability(myrank,time,it,NSTEP, &
npoin_acoustic,npoin_elastic,npoin_poroelastic, &
any_elastic_glob,any_elastic,displ_elastic, &
@@ -52,32 +52,32 @@
year_start,month_start,time_start)
! checks simulation stability and outputs timerun infos
-
+
implicit none
include "constants.h"
#ifdef USE_MPI
include "mpif.h"
#endif
-
+
integer :: myrank,it,NSTEP
double precision :: time
-
+
logical :: any_elastic_glob,any_elastic
integer :: npoin_elastic
real(kind=CUSTOM_REAL), dimension(3,npoin_elastic) :: displ_elastic
-
+
logical :: any_poroelastic_glob,any_poroelastic
integer :: npoin_poroelastic
real(kind=CUSTOM_REAL), dimension(NDIM,npoin_poroelastic) :: displs_poroelastic,displw_poroelastic
-
+
logical :: any_acoustic_glob,any_acoustic
integer :: npoin_acoustic
real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: potential_acoustic
double precision :: time_start
integer :: year_start,month_start
-
+
! local parameters
double precision displnorm_all,displnorm_all_glob
! timer to count elapsed time
@@ -102,7 +102,7 @@
integer :: ier
#endif
- ! user output
+ ! user output
if (myrank == 0) then
write(IOUT,*)
if(time >= 1.d-3 .and. time < 1000.d0) then
@@ -123,7 +123,7 @@
else
displnorm_all = 0.d0
endif
-
+
displnorm_all_glob = displnorm_all
#ifdef USE_MPI
call MPI_ALLREDUCE (displnorm_all, displnorm_all_glob, 1, MPI_DOUBLE_PRECISION, &
@@ -138,7 +138,7 @@
! than the greatest possible floating-point number of the machine
if(displnorm_all_glob > STABILITY_THRESHOLD .or. displnorm_all_glob < 0) &
call exit_MPI('code became unstable and blew up in solid (elastic)')
-
+
endif
! poroelastic wavefield
@@ -264,7 +264,7 @@
ihours_total,iminutes_total,iseconds_total
if(it < NSTEP) then
- ! compute date and time at which the run should finish
+ ! compute date and time at which the run should finish
! (useful for long runs); for simplicity only minutes
! are considered, seconds are ignored; in any case the prediction is not
! accurate down to seconds because of system and network fluctuations
@@ -300,6 +300,6 @@
endif
if (myrank == 0) write(IOUT,*)
-
- end subroutine check_stability
-
+
+ end subroutine check_stability
+
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/checkgrid.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/checkgrid.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/checkgrid.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -65,7 +65,7 @@
! for instance to analyze Cuthill-McKee mesh partitioning etc.
integer :: UPPER_LIMIT_DISPLAY
- integer :: npoin,nspec,numat
+ integer :: npoin,nspec,numat
integer, dimension(nspec) :: kmato
logical, dimension(nspec) :: poroelastic
integer, dimension(NGLLX,NGLLX,nspec) :: ibool
@@ -102,7 +102,7 @@
TURN_VISCATTENUATION_ON
integer :: myrank,nproc
-
+
! local parameters
double precision vpIImax_local,vpIImin_local
double precision vsmin,vsmax,densmin,densmax,vpImax_local,vpImin_local,vsmin_local
@@ -447,7 +447,7 @@
do i = 1,NSOURCES
- ! excludes Dirac and Heaviside sources
+ ! excludes Dirac and Heaviside sources
if(time_function_type(i) /= 4 .and. time_function_type(i) /= 5) then
! write(IOUT,*) ' Onset time = ',t0+tshift_src(i)
! write(IOUT,*) ' Fundamental period = ',1.d0/f0(i)
@@ -721,9 +721,9 @@
material = kmato(ispec)
if(poroelastic(ispec)) then
-
+
! poroelastic material
-
+
phi=porosity(material)
tort=tortuosity(material)
perm=permeability(1,material)
@@ -1861,22 +1861,22 @@
681 format(f6.2,1x,f6.2)
end subroutine checkgrid
-
-
+
+
!
!-------------------------------------------------------------------------------------------------
-!
+!
subroutine checkgrid_setup_GLLper(percent_GLL,NGLLX_MAX_STABILITY)
implicit none
include "constants.h"
- integer :: NGLLX_MAX_STABILITY
+ integer :: NGLLX_MAX_STABILITY
double precision :: percent_GLL(NGLLX_MAX_STABILITY)
if( NGLLX_MAX_STABILITY /= 15 ) call exit_MPI('check NGLLX_MAX_STABILITY in checkgrid.f90')
-
+
! define percentage of smallest distance between GLL points for NGLLX points
! percentages were computed by calling the GLL points routine for each degree
@@ -1903,12 +1903,12 @@
endif
end subroutine checkgrid_setup_GLLper
-
-
+
+
!
!-------------------------------------------------------------------------------------------------
-!
-
+!
+
subroutine checkgrid_setup_colorp(red,green,blue,NUM_COLORS)
! color palette
@@ -1918,7 +1918,7 @@
double precision, dimension(NUM_COLORS) :: red,green,blue
if( NUM_COLORS /= 236 ) call exit_MPI('check NUM_COLORS in checkgrid.f90')
-
+
! red
red(1) = 1.00000000000000
green(1) = 0.000000000000000E+000
@@ -3098,5 +3098,5 @@
red(236) = 1.00000000000000
green(236) = 0.894117647058824
blue(236) = 0.768627450980392
-
+
end subroutine checkgrid_setup_colorp
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_arrays_source.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_arrays_source.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_arrays_source.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -169,7 +169,7 @@
do icomp = 1,3
- filename = 'OUTPUT_FILES/'//trim(adj_source_file) // '.'// comp(icomp) // '.adj'
+ filename = 'SEM/'//trim(adj_source_file) // '.'// comp(icomp) // '.adj'
open(unit = IIN, file = trim(filename), iostat = ios)
if (ios /= 0) call exit_MPI(' file '//trim(filename)//'does not exist')
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_energy.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_energy.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_energy.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -100,7 +100,7 @@
integer :: npoin_elastic
real(kind=CUSTOM_REAL), dimension(3,npoin_elastic) :: displ_elastic,veloc_elastic
-
+
integer :: npoin_poroelastic
real(kind=CUSTOM_REAL), dimension(NDIM,npoin_poroelastic) :: displs_poroelastic,velocs_poroelastic
real(kind=CUSTOM_REAL), dimension(NDIM,npoin_poroelastic) :: displw_poroelastic,velocw_poroelastic
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_pressure.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_pressure.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_pressure.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -78,7 +78,7 @@
real(kind=CUSTOM_REAL), dimension(3,npoin_elastic) :: displ_elastic
integer :: npoin_poroelastic
real(kind=CUSTOM_REAL), dimension(NDIM,npoin_poroelastic) :: displs_poroelastic,displw_poroelastic
-
+
double precision, dimension(3,npoin) :: vector_field_display
! array with derivatives of Lagrange polynomials
@@ -158,7 +158,7 @@
logical, dimension(nspec) :: elastic,poroelastic,anisotropic
integer :: npoin_acoustic
- real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: potential_dot_dot_acoustic
+ real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: potential_dot_dot_acoustic
integer :: npoin_elastic
real(kind=CUSTOM_REAL), dimension(3,npoin_elastic) :: displ_elastic
integer :: npoin_poroelastic
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_vector_field.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_vector_field.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/compute_vector_field.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -66,12 +66,12 @@
logical, dimension(nspec) :: elastic,poroelastic
integer :: npoin_acoustic
- real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: potential_acoustic
+ real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: potential_acoustic
integer :: npoin_elastic
real(kind=CUSTOM_REAL), dimension(3,npoin_elastic) :: veloc_elastic
integer :: npoin_poroelastic
real(kind=CUSTOM_REAL), dimension(NDIM,npoin_poroelastic) :: velocs_poroelastic
-
+
double precision, dimension(3,npoin) :: vector_field_display
! array with derivatives of Lagrange polynomials
@@ -143,7 +143,7 @@
logical, dimension(nspec) :: elastic,poroelastic
integer :: npoin_acoustic
- real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: potential_acoustic
+ real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: potential_acoustic
integer :: npoin_elastic
real(kind=CUSTOM_REAL), dimension(3,npoin_elastic) :: veloc_elastic
integer :: npoin_poroelastic
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/enforce_acoustic_free_surface.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/enforce_acoustic_free_surface.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/enforce_acoustic_free_surface.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -72,7 +72,7 @@
do ispec_acoustic_surface = 1, nelem_acoustic_surface
ispec = acoustic_surface(1,ispec_acoustic_surface)
-
+
do j = acoustic_surface(4,ispec_acoustic_surface), acoustic_surface(5,ispec_acoustic_surface)
do i = acoustic_surface(2,ispec_acoustic_surface), acoustic_surface(3,ispec_acoustic_surface)
iglob = ibool(i,j,ispec)
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/get_MPI.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/get_MPI.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/get_MPI.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -63,7 +63,7 @@
include "constants.h"
include 'mpif.h'
-
+
integer, intent(in) :: nspec, npoin, ngnod
logical, dimension(nspec), intent(in) :: elastic, poroelastic
integer, dimension(ngnod,nspec), intent(in) :: knods
@@ -73,7 +73,7 @@
integer :: max_interface_size
integer, dimension(ninterface) :: my_nelmnts_neighbours,my_neighbours
integer, dimension(4,max_interface_size,ninterface) :: my_interfaces
-
+
integer, dimension(NGLLX*max_interface_size,ninterface) :: &
ibool_interfaces_acoustic,ibool_interfaces_elastic,ibool_interfaces_poroelastic
integer, dimension(ninterface) :: &
@@ -86,7 +86,7 @@
integer :: myrank,ipass
double precision, dimension(NDIM,npoin) :: coord
-
+
!local parameters
double precision, dimension(:), allocatable :: xp,zp
double precision, dimension(:), allocatable :: work
@@ -107,7 +107,7 @@
real(kind=CUSTOM_REAL), dimension(:,:), allocatable :: buffer_recv_faces_vector_ac
integer, dimension(:), allocatable :: tab_requests_send_recv_acoustic
- ! gets global indices for points on MPI interfaces
+ ! gets global indices for points on MPI interfaces
! (defined by my_interfaces) between different partitions
! and stores them in ibool_interfaces*** & nibool_interfaces*** (number of total points)
call prepare_assemble_MPI(nspec,ibool,knods, ngnod,npoin, elastic, poroelastic, &
@@ -127,9 +127,9 @@
num_points1 = 0
num_points2 = 0
allocate(nibool_interfaces_true(ninterface))
-
+
do idomain = 1,3
-
+
! checks number of interface in this domain
num_interface = 0
if( idomain == 1 ) then
@@ -140,22 +140,22 @@
num_interface = ninterface_poroelastic
endif
if( num_interface == 0 ) cycle
-
+
! loops over interfaces
do iinterface = 1, ninterface
-
- ! number of global points in this interface
+
+ ! number of global points in this interface
num_nibool = 0
if( idomain == 1 ) then
num_nibool = nibool_interfaces_acoustic(iinterface)
elseif( idomain == 2 ) then
num_nibool = nibool_interfaces_elastic(iinterface)
elseif( idomain == 3 ) then
- num_nibool = nibool_interfaces_poroelastic(iinterface)
+ num_nibool = nibool_interfaces_poroelastic(iinterface)
endif
! checks if anything to sort
if( num_nibool == 0 ) cycle
-
+
allocate(xp(num_nibool))
allocate(zp(num_nibool))
allocate(locval(num_nibool))
@@ -173,14 +173,14 @@
elseif( idomain == 2 ) then
ibool_dummy(:) = ibool_interfaces_elastic(1:num_nibool,iinterface)
elseif( idomain == 3 ) then
- ibool_dummy(:) = ibool_interfaces_poroelastic(1:num_nibool,iinterface)
+ ibool_dummy(:) = ibool_interfaces_poroelastic(1:num_nibool,iinterface)
endif
! gets x,y,z coordinates of global points on MPI interface
do ilocnum = 1, num_nibool
- iglob = ibool_dummy(ilocnum)
+ iglob = ibool_dummy(ilocnum)
xp(ilocnum) = coord(1,iglob)
- zp(ilocnum) = coord(2,iglob)
+ zp(ilocnum) = coord(2,iglob)
enddo
! sorts (lexicographically?) ibool_interfaces and updates value
@@ -200,7 +200,7 @@
write(IOUT,*) ' interface:',iinterface,num_points1,num_points2
call exit_MPI('error sorting MPI interface')
endif
-
+
! stores new order of ibool array
if( idomain == 1 ) then
ibool_interfaces_acoustic(1:num_nibool,iinterface) = ibool_dummy(:)
@@ -208,7 +208,7 @@
ibool_interfaces_elastic(1:num_nibool,iinterface) = ibool_dummy(:)
elseif( idomain == 3 ) then
ibool_interfaces_poroelastic(1:num_nibool,iinterface) = ibool_dummy(:)
- endif
+ endif
! cleanup temporary arrays
deallocate(xp)
@@ -229,7 +229,7 @@
! outputs total number of MPI interface points
call MPI_REDUCE(num_points2, num_points1, 1, MPI_INTEGER, &
- MPI_SUM, 0, MPI_COMM_WORLD, ier)
+ MPI_SUM, 0, MPI_COMM_WORLD, ier)
if( myrank == 0 .and. ipass == 1 ) then
write(IOUT,*) 'total MPI interface points: ',num_points1
endif
@@ -269,16 +269,16 @@
inum = inum + nibool_interfaces_acoustic(iinterface)
enddo
endif
-
+
! note: this mpi reduction awaits information from all processes.
! thus, avoid an mpi deadlock in case some of the paritions have no acoustic interface
call MPI_REDUCE(inum, num_points1, 1, MPI_INTEGER, &
- MPI_SUM, 0, MPI_COMM_WORLD, ier)
+ MPI_SUM, 0, MPI_COMM_WORLD, ier)
if( myrank == 0 .and. ipass == 1 ) then
write(IOUT,*) ' acoustic interface points: ',num_points1
endif
-
+
! checks if assembly works
inum = 0
if( ninterface_acoustic > 0 ) then
@@ -297,30 +297,30 @@
! only counts flags with MPI contributions
if( nint(test_flag_cr(iglob)) > myrank+1 ) inum = inum + 1
enddo
-
+
deallocate(tab_requests_send_recv_acoustic)
deallocate(buffer_send_faces_vector_ac)
deallocate(buffer_recv_faces_vector_ac)
- deallocate(test_flag_cr)
+ deallocate(test_flag_cr)
endif
- ! note: this mpi reduction awaits information from all processes.
+ ! note: this mpi reduction awaits information from all processes.
call MPI_REDUCE(inum, num_points2, 1, MPI_INTEGER, &
- MPI_SUM, 0, MPI_COMM_WORLD, ier)
-
+ MPI_SUM, 0, MPI_COMM_WORLD, ier)
+
if( myrank == 0 ) then
if( ipass == 1 ) then
write(IOUT,*) ' assembly acoustic MPI interface points:',num_points2
- endif
+ endif
! they don't need to fit, somehow..
!if( num_points2 /= num_points1 ) then
! print*,'error acoustic assembly:' !,myrank
! print*,' total = ',num_points1,' not equal to assembled ',num_points2
! call exit_MPI('error acoustic MPI assembly')
- !endif
+ !endif
endif
-
+
end subroutine get_MPI
#endif
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/gmat01.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/gmat01.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/gmat01.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -72,8 +72,8 @@
double precision :: w_c
integer in,n,indic
character(len=80) datlin
-
-
+
+
!
!---- loop over the different material sets
!
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/initialize_simulation.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/initialize_simulation.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/initialize_simulation.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -71,7 +71,7 @@
call MPI_COMM_SIZE(MPI_COMM_WORLD,nproc,ier)
call MPI_COMM_RANK(MPI_COMM_WORLD,myrank,ier)
if( ier /= 0 ) call exit_MPI('error MPI initialization')
-
+
! this is only used in the case of MPI because it distinguishes between inner and outer element
! in the MPI partitions, which is meaningless in the serial case
if(FURTHER_REDUCE_CACHE_MISSES) then
@@ -114,7 +114,7 @@
open(IOUT,file=prname,status='unknown',action='write',iostat=ier)
if( ier /= 0 ) call exit_MPI('error opening file simulation_results***.txt')
-
+
endif
end subroutine initialize_simulation
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/invert_mass_matrix.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/invert_mass_matrix.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/invert_mass_matrix.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -54,7 +54,7 @@
density,poroelastcoef,porosity,tortuosity, &
vpext,rhoext)
-! builds the global mass matrix
+! builds the global mass matrix
implicit none
include 'constants.h'
@@ -64,41 +64,41 @@
! inverse mass matrices
integer :: npoin_elastic
real(kind=CUSTOM_REAL), dimension(npoin_elastic) :: rmass_inverse_elastic
-
+
integer :: npoin_acoustic
real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: rmass_inverse_acoustic
-
+
integer :: npoin_poroelastic
real(kind=CUSTOM_REAL), dimension(npoin_poroelastic) :: &
rmass_s_inverse_poroelastic,rmass_w_inverse_poroelastic
-
+
integer :: nspec
integer, dimension(NGLLX,NGLLZ,nspec) :: ibool
integer, dimension(nspec) :: kmato
real(kind=CUSTOM_REAL), dimension(NGLLX) :: wxgll
real(kind=CUSTOM_REAL), dimension(NGLLX) :: wzgll
- real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ,nspec) :: jacobian
+ real(kind=CUSTOM_REAL), dimension(NGLLX,NGLLZ,nspec) :: jacobian
logical,dimension(nspec) :: elastic,poroelastic
-
+
logical :: assign_external_model
integer :: numat
double precision, dimension(2,numat) :: density
double precision, dimension(4,3,numat) :: poroelastcoef
double precision, dimension(numat) :: porosity,tortuosity
double precision, dimension(NGLLX,NGLLX,nspec) :: vpext,rhoext
-
+
! local parameters
- integer :: ispec,i,j,iglob
+ integer :: ispec,i,j,iglob
double precision :: rhol,kappal,mul_relaxed,lambdal_relaxed
double precision :: rhol_s,rhol_f,rhol_bar,phil,tortl
-
+
! initializes mass matrix
if(any_elastic) rmass_inverse_elastic(:) = 0._CUSTOM_REAL
if(any_poroelastic) rmass_s_inverse_poroelastic(:) = 0._CUSTOM_REAL
if(any_poroelastic) rmass_w_inverse_poroelastic(:) = 0._CUSTOM_REAL
if(any_acoustic) rmass_inverse_acoustic(:) = 0._CUSTOM_REAL
-
+
do ispec = 1,nspec
do j = 1,NGLLZ
do i = 1,NGLLX
@@ -115,10 +115,10 @@
kappal = lambdal_relaxed + 2.d0/3.d0*mul_relaxed
endif
- if( poroelastic(ispec) ) then
-
+ if( poroelastic(ispec) ) then
+
! material is poroelastic
-
+
rhol_s = density(1,kmato(ispec))
rhol_f = density(2,kmato(ispec))
phil = porosity(kmato(ispec))
@@ -132,21 +132,21 @@
rmass_w_inverse_poroelastic(iglob) = rmass_w_inverse_poroelastic(iglob) &
+ wxgll(i)*wzgll(j)*jacobian(i,j,ispec)*(rhol_bar*rhol_f*tortl &
- phil*rhol_f*rhol_f)/(rhol_bar*phil)
-
- elseif( elastic(ispec) ) then
+ elseif( elastic(ispec) ) then
+
! for elastic medium
-
+
rmass_inverse_elastic(iglob) = rmass_inverse_elastic(iglob) &
+ wxgll(i)*wzgll(j)*rhol*jacobian(i,j,ispec)
-
- else
-
+
+ else
+
! for acoustic medium
-
+
rmass_inverse_acoustic(iglob) = rmass_inverse_acoustic(iglob) &
+ wxgll(i)*wzgll(j)*jacobian(i,j,ispec) / kappal
-
+
endif
enddo
@@ -177,7 +177,7 @@
integer :: npoin_acoustic
real(kind=CUSTOM_REAL), dimension(npoin_acoustic) :: rmass_inverse_acoustic
-
+
integer :: npoin_poroelastic
real(kind=CUSTOM_REAL), dimension(npoin_poroelastic) :: &
rmass_s_inverse_poroelastic,rmass_w_inverse_poroelastic
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_force.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_force.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_force.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -146,7 +146,7 @@
if ( abs(dist_glob - distmin) < TINYVAL ) is_proc_source = 1
#ifdef USE_MPI
- ! determining the number of processes that contain the source
+ ! determining the number of processes that contain the source
! (useful when the source is located on an interface)
call MPI_ALLREDUCE (is_proc_source, nb_proc_source, 1, MPI_INTEGER, &
MPI_SUM, MPI_COMM_WORLD, ierror)
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_moment_tensor.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_moment_tensor.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/locate_source_moment_tensor.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -146,7 +146,7 @@
if ( dist_glob == distmin ) is_proc_source = 1
#ifdef USE_MPI
- ! determining the number of processes that contain the source
+ ! determining the number of processes that contain the source
! (useful when the source is located on an interface)
call MPI_ALLREDUCE (is_proc_source, nb_proc_source, 1, MPI_INTEGER, &
MPI_SUM, MPI_COMM_WORLD, ierror)
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_assemble_MPI.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_assemble_MPI.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_assemble_MPI.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -143,15 +143,15 @@
do ix = ixmin, ixmax, sens
! global index
iglob = ibool(ix,iz,ispec)
-
- ! checks to which material this common interface belongs
+
+ ! checks to which material this common interface belongs
if ( elastic(ispec) ) then
! elastic element
if(.not. mask_ibool_elastic(iglob)) then
mask_ibool_elastic(iglob) = .true.
npoin_interface_elastic = npoin_interface_elastic + 1
ibool_interfaces_elastic(npoin_interface_elastic,num_interface) = iglob
- end if
+ end if
else if ( poroelastic(ispec) ) then
! poroelastic element
if(.not. mask_ibool_poroelastic(iglob)) then
@@ -171,7 +171,7 @@
end do
end do
-
+
! stores counters for interface points
nibool_interfaces_acoustic(num_interface) = npoin_interface_acoustic
nibool_interfaces_elastic(num_interface) = npoin_interface_elastic
@@ -197,7 +197,7 @@
ninterface_acoustic = 0
ninterface_elastic = 0
ninterface_poroelastic = 0
-
+
! loops over all MPI interfaces
do num_interface = 1, ninterface
! sets acoustic MPI interface (local) indices in range [1,ninterface_acoustic]
@@ -237,9 +237,9 @@
integer, intent(out) :: sens
if ( itype == 1 ) then
-
+
! common single point
-
+
! checks which corner point is given
if ( e1 == n(1) ) then
ixmin = 1
@@ -266,11 +266,11 @@
izmax = NGLLZ
end if
sens = 1
-
+
else if( itype == 2 ) then
-
+
! common edge
-
+
! checks which edge and corner points are given
if ( e1 == n(1) ) then
ixmin = 1
@@ -328,11 +328,11 @@
sens = 1
end if
end if
-
+
else
call exit_MPI('ERROR get_edge unknown type')
-
+
end if
end subroutine get_edge
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_color_image.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -48,7 +48,7 @@
xmin_color_image,xmax_color_image, &
zmin_color_image,zmax_color_image, &
coord,npoin,npgeo)
-
+
implicit none
include "constants.h"
#ifdef USE_MPI
@@ -59,18 +59,18 @@
integer :: npoin,npgeo
double precision, dimension(NDIM,npoin) :: coord
-
+
double precision :: xmin_color_image,xmax_color_image, &
zmin_color_image,zmax_color_image
-
+
! local parameters
- integer :: npgeo_glob
+ integer :: npgeo_glob
double precision :: xmin_color_image_loc, xmax_color_image_loc, &
zmin_color_image_loc,zmax_color_image_loc
#ifdef USE_MPI
integer :: ier
#endif
-
+
! horizontal size of the image
xmin_color_image_loc = minval(coord(1,:))
xmax_color_image_loc = maxval(coord(1,:))
@@ -104,7 +104,7 @@
NZ_IMAGE_color = nint(NX_IMAGE_color * (zmax_color_image - zmin_color_image) &
/ (xmax_color_image - xmin_color_image))
- ! convert pixel sizes to even numbers because easier to reduce size,
+ ! convert pixel sizes to even numbers because easier to reduce size,
! create MPEG movies in postprocessing
NX_IMAGE_color = 2 * (NX_IMAGE_color / 2)
NZ_IMAGE_color = 2 * (NZ_IMAGE_color / 2)
@@ -114,18 +114,18 @@
if (NZ_IMAGE_color > 99999) call exit_MPI('output image too big : NZ_IMAGE_color > 99999.')
end subroutine prepare_color_image_init
-
-
+
+
!
!-------------------------------------------------------------------------------------------------
-!
-
+!
+
subroutine prepare_color_image_pixels(myrank,NX_IMAGE_color,NZ_IMAGE_color, &
xmin_color_image,xmax_color_image, &
zmin_color_image,zmax_color_image, &
coord,npoin,coorg,npgeo,nspec,ngnod,knods,ibool, &
nb_pixel_loc,iglob_image_color)
-
+
implicit none
include "constants.h"
@@ -137,13 +137,13 @@
integer :: npoin,nspec,npgeo,ngnod
double precision, dimension(NDIM,npoin) :: coord
double precision, dimension(NDIM,npgeo) :: coorg
-
+
integer, dimension(ngnod,nspec) :: knods
integer, dimension(NGLLX,NGLLZ,nspec) :: ibool
-
+
integer :: nb_pixel_loc
integer, dimension(NX_IMAGE_color,NZ_IMAGE_color) :: iglob_image_color
-
+
! local parameters
double precision :: size_pixel_horizontal,size_pixel_vertical
double precision, dimension(2,4) :: elmnt_coords
@@ -222,7 +222,7 @@
enddo
enddo
- end subroutine prepare_color_image_pixels
+ end subroutine prepare_color_image_pixels
!
@@ -237,7 +237,7 @@
nproc,myrank,assign_external_model,vpext)
! stores P-velocity model in image_color_vp_display
-
+
implicit none
include "constants.h"
#ifdef USE_MPI
@@ -248,15 +248,15 @@
integer :: NX_IMAGE_color,NZ_IMAGE_color
double precision, dimension(NX_IMAGE_color,NZ_IMAGE_color) :: image_color_vp_display
integer, dimension(NX_IMAGE_color,NZ_IMAGE_color) :: iglob_image_color
-
+
integer, dimension(NGLLX,NGLLZ,nspec) :: ibool
integer, dimension(nspec) :: kmato
-
+
logical, dimension(nspec) :: poroelastic
integer :: nb_pixel_loc
integer, dimension(nb_pixel_loc) :: num_pixel_loc
-
+
logical :: assign_external_model
integer :: nproc,myrank
integer :: numat
@@ -265,7 +265,7 @@
double precision, dimension(numat) :: porosity,tortuosity
double precision, dimension(NGLLX,NGLLX,nspec) :: vpext
- ! local parameters
+ ! local parameters
double precision, dimension(:), allocatable :: vp_display
double precision :: rhol,mul_relaxed,lambdal_relaxed
double precision :: rhol_s,rhol_f,rhol_bar,phil,tortl,mul_s,kappal_s,kappal_f, &
@@ -279,10 +279,10 @@
double precision, dimension(:), allocatable :: data_pixel_send
integer, dimension(:,:), allocatable :: num_pixel_recv
integer, dimension(:), allocatable :: nb_pixel_per_proc
- integer, dimension(MPI_STATUS_SIZE) :: request_mpi_status
+ integer, dimension(MPI_STATUS_SIZE) :: request_mpi_status
integer :: ier,iproc
#else
- integer :: dummy
+ integer :: dummy
#endif
! to display the P-velocity model in background on color images
@@ -398,7 +398,7 @@
print*,'image vp bounds:',myrank,iproc,k, &
num_pixel_recv(k,iproc+1),nb_pixel_per_proc(iproc+1)
print*,' i: ',i,NX_IMAGE_color
- print*,' j: ',j,NZ_IMAGE_color
+ print*,' j: ',j,NZ_IMAGE_color
endif
image_color_vp_display(i,j) = data_pixel_recv(k)
@@ -432,5 +432,5 @@
dummy = myrank
dummy = nproc
#endif
-
+
end subroutine prepare_color_image_vp
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_initialfield.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_initialfield.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_initialfield.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -56,14 +56,14 @@
#ifdef USE_MPI
include "mpif.h"
#endif
-
+
integer :: myrank
logical :: any_acoustic,any_poroelastic
-
+
integer :: NSOURCES
integer, dimension(NSOURCES) :: source_type
double precision, dimension(NSOURCES) :: angleforce,x_source,z_source,f0
-
+
integer :: npoin,numat
double precision, dimension(4,3,numat) :: poroelastcoef
double precision, dimension(2,numat) :: density
@@ -74,9 +74,9 @@
double precision, dimension(2) :: A_plane, B_plane, C_plane
real(kind=CUSTOM_REAL), dimension(3,npoin) :: accel_elastic,veloc_elastic,displ_elastic
-
+
logical :: over_critical_angle
-
+
! local parameters
integer :: numat_local,i
double precision :: denst,lambdaplus2mu,mu,p
@@ -87,7 +87,7 @@
integer :: ier
#endif
double precision, external :: ricker_Bielak_displ,ricker_Bielak_veloc,ricker_Bielak_accel
-
+
! user output
if (myrank == 0) then
write(IOUT,*)
@@ -97,7 +97,7 @@
write(IOUT,*) 'Implementing an analytical initial plane wave...'
write(IOUT,*)
endif
-
+
if(any_acoustic .or. any_poroelastic) &
call exit_MPI('initial field currently implemented for purely elastic simulation only')
@@ -133,7 +133,7 @@
call exit_MPI("incorrect angleforce: must have 0 <= angleforce < 90")
endif
endif
-
+
! only implemented for homogeneous media therefore only 1 material supported
numat_local = numat
if (numat /= 1) then
@@ -187,7 +187,7 @@
! if this coefficient is greater than 1, we are beyond the critical SV wave angle and there cannot be a converted P wave
if (p*c_refl<=1.d0) then
angleforce_refl = asin(p*c_refl)
-
+
! from formulas (5.30) and (5.31) p 140 in Aki & Richards (1980)
SS = (cos(2.d0*angleforce(1))**2/csloc**3 &
- 4.d0*p**2*cos(angleforce(1))*cos(angleforce_refl)/cploc) / &
@@ -308,9 +308,9 @@
enddo
endif
-
- end subroutine prepare_initialfield
-
+
+ end subroutine prepare_initialfield
+
!
!-------------------------------------------------------------------------------------------------
!
@@ -319,7 +319,7 @@
numabs,codeabs,ibool,nspec, &
source_type,NSOURCES,c_inc,c_refl, &
count_bottom,count_left,count_right)
-
+
implicit none
include "constants.h"
@@ -337,7 +337,7 @@
integer :: NSOURCES
integer :: source_type(NSOURCES)
-
+
double precision :: c_inc,c_refl
integer :: count_bottom,count_left,count_right
@@ -390,6 +390,6 @@
enddo
endif
enddo
-
+
end subroutine prepare_initialfield_paco
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_source_time_function.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_source_time_function.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/prepare_source_time_function.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -88,7 +88,7 @@
! note: t0 is the simulation start time, tshift_src is the time shift of the source
! relative to this start time
-
+
! compute current time
time = (it-1)*deltat
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_external_model.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_external_model.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/read_external_model.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -122,7 +122,7 @@
Qp_attenuationext(i,j,ispec),Qs_attenuationext(i,j,ispec),&
c11ext(i,j,ispec),c13ext(i,j,ispec),c15ext(i,j,ispec), &
c33ext(i,j,ispec),c35ext(i,j,ispec),c55ext(i,j,ispec))
-
+
if((c11ext(i,j,ispec) /= 0) .or. (c13ext(i,j,ispec) /= 0) .or. (c15ext(i,j,ispec) /= 0) .or. &
(c33ext(i,j,ispec) /= 0) .or. (c35ext(i,j,ispec) /= 0) .or. (c55ext(i,j,ispec) /= 0)) then
! vp, vs : dummy values, trick to avoid floating point errors
@@ -142,7 +142,7 @@
anisotropic(:) = .false.
elastic(:) = .false.
poroelastic(:) = .false.
-
+
do ispec = 1,nspec
previous_vsext = -1.d0
do j = 1,NGLLZ
@@ -152,7 +152,7 @@
((vsext(i,j,ispec) >= TINYVAL .and. previous_vsext < TINYVAL) .or. &
(vsext(i,j,ispec) < TINYVAL .and. previous_vsext >= TINYVAL))) &
call exit_MPI('external velocity model cannot be both fluid and solid inside the same spectral element')
-
+
if((c11ext(i,j,ispec) /= 0) .or. (c13ext(i,j,ispec) /= 0) .or. (c15ext(i,j,ispec) /= 0) .or. &
(c33ext(i,j,ispec) /= 0) .or. (c35ext(i,j,ispec) /= 0) .or. (c55ext(i,j,ispec) /= 0)) then
anisotropic(ispec) = .true.
@@ -170,7 +170,7 @@
elastic(ispec) = .true.
any_elastic = .true.
endif
-
+
call attenuation_model(N_SLS,Qp_attenuationext(i,j,ispec),Qs_attenuationext(i,j,ispec), &
f0_attenuation,inv_tau_sigma_nu1_sent,phi_nu1_sent, &
inv_tau_sigma_nu2_sent,phi_nu2_sent,Mu_nu1_sent,Mu_nu2_sent)
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/save_openDX_jacobian.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/save_openDX_jacobian.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/save_openDX_jacobian.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -45,27 +45,27 @@
subroutine save_openDX_jacobian(nspec,npgeo,ngnod,knods,coorg,xigll,zigll)
-
+
implicit none
include "constants.h"
-
+
integer :: nspec,npgeo,ngnod
double precision, dimension(NDIM,npgeo) :: coorg
double precision, dimension(NGLLX) :: xigll
double precision, dimension(NGLLZ) :: zigll
-
+
integer, dimension(ngnod,nspec) :: knods
-
+
! local parameters
integer, dimension(:), allocatable :: ibool_OpenDX
logical, dimension(:), allocatable :: mask_point
double precision :: xelm,zelm
double precision :: xi,gamma,x,z
double precision :: xixl,xizl,gammaxl,gammazl,jacobianl
-
+
integer :: ia,nnum,ipoint_number,total_of_negative_elements
integer :: ispec,i,j
- logical :: found_a_problem_in_this_element
+ logical :: found_a_problem_in_this_element
! create an OpenDX file to visualize this element
open(unit=11,file='DX_all_elements_with_negative_jacobian_in_red.dx',status='unknown')
@@ -151,5 +151,5 @@
print *,total_of_negative_elements,' elements have a negative Jacobian, out of ',nspec
print *,'i.e., ',sngl(100.d0 * dble(total_of_negative_elements)/dble(nspec)),'%'
print *
-
- end subroutine save_openDX_jacobian
\ No newline at end of file
+
+ end subroutine save_openDX_jacobian
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/set_sources.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/set_sources.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/set_sources.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -68,7 +68,7 @@
integer :: i_source
double precision, dimension(NSOURCES) :: t0_source,hdur
double precision :: min_tshift_src_original
-
+
! checks the input
do i_source=1,NSOURCES
@@ -100,7 +100,7 @@
if( abs(f0(i_source)) < TINYVAL ) then
call exit_MPI('Error source frequency is zero')
endif
-
+
! half-duration of source
hdur(i_source) = 1.d0 / f0(i_source)
@@ -116,7 +116,7 @@
! convert angle from degrees to radians
angleforce(i_source) = angleforce(i_source) * PI / 180.d0
-
+
enddo ! do i_source=1,NSOURCES
! initializes simulation start time
@@ -133,7 +133,7 @@
min_tshift_src_original = minval( tshift_src(:) )
tshift_src(:) = t0_source(:) - t0
endif
-
+
! checks if user set USER_T0 to fix simulation start time
! note: USER_T0 has to be positive
if( USER_T0 > 0.d0 ) then
@@ -147,13 +147,13 @@
write(IOUT,*) ' using USER_T0 . . . . . . . . . = ',USER_T0
write(IOUT,*) ' original t0 . . . . . . . . . = ',t0
write(IOUT,*) ' min_tshift_src_original . . . = ',min_tshift_src_original
- write(IOUT,*)
+ write(IOUT,*)
endif
! checks if automatically set t0 is too small
! note: times in seismograms are shifted by t0(1)
if( t0 <= USER_T0 + min_tshift_src_original ) then
-
+
! sets new simulation start time such that
! simulation starts at t = - t0 = - USER_T0
t0 = USER_T0
@@ -171,14 +171,14 @@
else
tshift_src(i_source) = t0_source(i_source) - 1.20d0 * hdur(i_source)
endif
- ! user output
+ ! user output
if( myrank == 0 .and. ipass == 1) then
write(IOUT,*) ' source ',i_source,'uses tshift = ',tshift_src(i_source)
endif
enddo
- ! user output
+ ! user output
if( myrank == 0 .and. ipass == 1) then
- write(IOUT,*)
+ write(IOUT,*)
endif
else
@@ -205,17 +205,17 @@
! loops over sources
do i_source = 1,NSOURCES
-
+
! excludes Dirac and Heaviside sources
if(time_function_type(i_source) /= 4 .and. time_function_type(i_source) /= 5) then
-
+
! user output
if( myrank == 0 .and. ipass == 1 ) then
write(IOUT,*) ' Onset time. . . . . . = ',t0+tshift_src(i_source)
write(IOUT,*) ' Fundamental period. . = ',1.d0/f0(i_source)
write(IOUT,*) ' Fundamental frequency = ',f0(i_source)
endif
-
+
! checks source onset time
if( t0+tshift_src(i_source) <= 1.d0/f0(i_source)) then
call exit_MPI('Onset time too small')
@@ -228,8 +228,8 @@
enddo
endif
-
+
! output formats
212 format(//,5x,'Source Type. . . . . . . . . . . . . . = Collocated Force',/5x, &
'X-position (meters). . . . . . . . . . =',1pe20.10,/5x, &
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/setup_sources_receivers.f90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/setup_sources_receivers.f90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/setup_sources_receivers.f90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -150,9 +150,9 @@
Mxx(i_source),Mzz(i_source),Mxz(i_source),xix,xiz,gammax,gammaz,xigll,zigll,nspec)
else if(.not.initialfield) then
-
+
call exit_MPI('incorrect source type')
-
+
endif
enddo ! do i_source=1,NSOURCES
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/sort_array_coordinates.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/sort_array_coordinates.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/sort_array_coordinates.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -63,7 +63,7 @@
integer,intent(out) :: nglob
integer,intent(inout) :: ibool(npointot)
-
+
integer iglob(npointot),loc(npointot)
integer ind(npointot),ninseg(npointot)
logical ifseg(npointot)
@@ -93,7 +93,7 @@
! sort within each segment
ioff=1
do iseg=1,nseg
-
+
if(j == 1) then
call rank_buffers(x(ioff),ind,ninseg(iseg))
else if(j == 2) then
Modified: seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90
===================================================================
--- seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2011-04-21 23:03:57 UTC (rev 18273)
+++ seismo/2D/SPECFEM2D/trunk/src/specfem2D/specfem2D.F90 2011-04-21 23:54:38 UTC (rev 18274)
@@ -250,6 +250,12 @@
! volume = {5336},
! pages = {350-363}}
!
+! version 6.2, many developers, April 2011:
+! - restructured package source code into separate src/ directories
+! - added configure & Makefile scripts and a PDF manual in doc/
+! - added user examples in EXAMPLES/
+! - added a USER_T0 parameter to fix the onset time in simulation
+!
! version 6.1, Christina Morency and Pieyre Le Loher, March 2010:
! - added SH (membrane) waves calculation for elastic media
! - added support for external fully anisotropic media
@@ -1334,93 +1340,94 @@
if(ADD_PERIODIC_CONDITIONS) then
#ifdef USE_MPI
- stop 'periodic conditions currently implemented for a serial simulation only (due e.g. to mass matrix rebuilding)'
+ stop 'periodic conditions currently implemented for a serial simulation only (due e.g. to mass matrix rebuilding)'
#endif
- if(any_poroelastic .or. any_acoustic) stop 'periodic conditions currently implemented for purely elastic models only'
+ if(any_poroelastic .or. any_acoustic) &
+ stop 'periodic conditions currently implemented for purely elastic models only'
- if(ACTUALLY_IMPLEMENT_PERM_OUT .or. ACTUALLY_IMPLEMENT_PERM_INN .or. ACTUALLY_IMPLEMENT_PERM_WHOLE) &
- stop 'currently, all permutations should be off for periodic conditions'
+ if(ACTUALLY_IMPLEMENT_PERM_OUT .or. ACTUALLY_IMPLEMENT_PERM_INN .or. ACTUALLY_IMPLEMENT_PERM_WHOLE) &
+ stop 'currently, all permutations should be off for periodic conditions'
-print *
-open(unit=123,file='DATA/Database00000_left_edge_only',status='old')
-do ispecperio = 1,NSPEC_PERIO
- read(123,*) numperio_left(ispecperio), &
- codeabs_perio_left(IBOTTOM,ispecperio), &
- codeabs_perio_left(IRIGHT,ispecperio), &
- codeabs_perio_left(ITOP,ispecperio), &
- codeabs_perio_left(ILEFT,ispecperio), &
- idummy1, idummy2, idummy3, idummy4, idummy5, idummy6, idummy7, idummy8
-enddo
-close(123)
-print *,'read ',NSPEC_PERIO,' elements for left periodic edge'
+ print *
+ open(unit=123,file='DATA/Database00000_left_edge_only',status='old')
+ do ispecperio = 1,NSPEC_PERIO
+ read(123,*) numperio_left(ispecperio), &
+ codeabs_perio_left(IBOTTOM,ispecperio), &
+ codeabs_perio_left(IRIGHT,ispecperio), &
+ codeabs_perio_left(ITOP,ispecperio), &
+ codeabs_perio_left(ILEFT,ispecperio), &
+ idummy1, idummy2, idummy3, idummy4, idummy5, idummy6, idummy7, idummy8
+ enddo
+ close(123)
+ print *,'read ',NSPEC_PERIO,' elements for left periodic edge'
-open(unit=123,file='DATA/Database00000_right_edge_only',status='old')
-do ispecperio = 1,NSPEC_PERIO
- read(123,*) numperio_right(ispecperio), &
- codeabs_perio_right(IBOTTOM,ispecperio), &
- codeabs_perio_right(IRIGHT,ispecperio), &
- codeabs_perio_right(ITOP,ispecperio), &
- codeabs_perio_right(ILEFT,ispecperio), &
- idummy1, idummy2, idummy3, idummy4, idummy5, idummy6, idummy7, idummy8
-enddo
-close(123)
-print *,'read ',NSPEC_PERIO,' elements for right periodic edge'
-print *
+ open(unit=123,file='DATA/Database00000_right_edge_only',status='old')
+ do ispecperio = 1,NSPEC_PERIO
+ read(123,*) numperio_right(ispecperio), &
+ codeabs_perio_right(IBOTTOM,ispecperio), &
+ codeabs_perio_right(IRIGHT,ispecperio), &
+ codeabs_perio_right(ITOP,ispecperio), &
+ codeabs_perio_right(ILEFT,ispecperio), &
+ idummy1, idummy2, idummy3, idummy4, idummy5, idummy6, idummy7, idummy8
+ enddo
+ close(123)
+ print *,'read ',NSPEC_PERIO,' elements for right periodic edge'
+ print *
-print *,'because of periodic conditions, values computed by checkgrid() are not reliable'
-print *
+ print *,'because of periodic conditions, values computed by checkgrid() are not reliable'
+ print *
!---------------------------------------------------------------------------
- do ispecperio = 1,NSPEC_PERIO
+ do ispecperio = 1,NSPEC_PERIO
- ispec = numperio_left(ispecperio)
+ ispec = numperio_left(ispecperio)
! print *,'dist of edge is ',sqrt((coord(2,ibool(1,1,ispec)) - coord(2,ibool(1,NGLLZ,ispec))) ** 2 + &
! (coord(1,ibool(1,1,ispec)) - coord(1,ibool(1,NGLLZ,ispec))) ** 2)
- if(codeabs_perio_left(ILEFT,ispecperio)) then
- i = 1
- do j = 1,NGLLZ
- iglob = ibool(i,j,ispec)
+ if(codeabs_perio_left(ILEFT,ispecperio)) then
+ i = 1
+ do j = 1,NGLLZ
+ iglob = ibool(i,j,ispec)
!----------------------------------------------------------------------
- include "include_for_periodic_conditions.f90"
+ include "include_for_periodic_conditions.f90"
!----------------------------------------------------------------------
- enddo
- endif
+ enddo
+ endif
- if(codeabs_perio_left(IRIGHT,ispecperio)) then
- i = NGLLX
- do j = 1,NGLLZ
- iglob = ibool(i,j,ispec)
+ if(codeabs_perio_left(IRIGHT,ispecperio)) then
+ i = NGLLX
+ do j = 1,NGLLZ
+ iglob = ibool(i,j,ispec)
!----------------------------------------------------------------------
- include "include_for_periodic_conditions.f90"
+ include "include_for_periodic_conditions.f90"
!----------------------------------------------------------------------
- enddo
- endif
+ enddo
+ endif
- if(codeabs_perio_left(IBOTTOM,ispecperio)) then
- j = 1
- do i = 1,NGLLX
- iglob = ibool(i,j,ispec)
+ if(codeabs_perio_left(IBOTTOM,ispecperio)) then
+ j = 1
+ do i = 1,NGLLX
+ iglob = ibool(i,j,ispec)
!----------------------------------------------------------------------
- include "include_for_periodic_conditions.f90"
+ include "include_for_periodic_conditions.f90"
!----------------------------------------------------------------------
- enddo
- endif
+ enddo
+ endif
- if(codeabs_perio_left(ITOP,ispecperio)) then
- j = NGLLZ
- do i = 1,NGLLX
- iglob = ibool(i,j,ispec)
+ if(codeabs_perio_left(ITOP,ispecperio)) then
+ j = NGLLZ
+ do i = 1,NGLLX
+ iglob = ibool(i,j,ispec)
!----------------------------------------------------------------------
- include "include_for_periodic_conditions.f90"
+ include "include_for_periodic_conditions.f90"
!----------------------------------------------------------------------
- enddo
- endif
+ enddo
+ endif
- enddo
+ enddo
! rebuild the mass matrix based on this new numbering
!
@@ -1730,11 +1737,13 @@
!!$ enddo
!!$ enddo
!!$ enddo
-!!$ open(unit=55,file='OUTPUT_FILES/x_z_weightLineX_weightLineZ_weightSurface',status='unknown')
-!!$ do n = 1,npoin
-!!$ write(55,*) coord(1,n), coord(2,n), weight_line_x(n), weight_line_z(n), weight_surface(n),weight_jacobian(n),weight_gll(n)
-!!$ enddo
-!!$ close(55)
+!!$ if( myrank == 0 ) then
+!!$ open(unit=55,file='OUTPUT_FILES/x_z_weightLineX_weightLineZ_weightSurface',status='unknown')
+!!$ do n = 1,npoin
+!!$ write(55,*) coord(1,n), coord(2,n), weight_line_x(n), weight_line_z(n), weight_surface(n),weight_jacobian(n),weight_gll(n)
+!!$ enddo
+!!$ close(55)
+!!$ endif
!!$ deallocate(weight_line_x)
!!$ deallocate(weight_line_z)
!!$ deallocate(weight_surface)
@@ -3785,19 +3794,19 @@
endif
endif
-call mpi_allreduce(d1_coorg_send_ps_element_mesh,d1_coorg_recv_ps_element_mesh,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
-call mpi_allreduce(d2_coorg_send_ps_element_mesh,d2_coorg_recv_ps_element_mesh,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
-call mpi_allreduce(d1_color_send_ps_element_mesh,d1_color_recv_ps_element_mesh,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d1_coorg_send_ps_element_mesh,d1_coorg_recv_ps_element_mesh,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d2_coorg_send_ps_element_mesh,d2_coorg_recv_ps_element_mesh,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d1_color_send_ps_element_mesh,d1_color_recv_ps_element_mesh,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
d1_coorg_send_ps_abs=4
d2_coorg_send_ps_abs=4*nelemabs
-call mpi_allreduce(d1_coorg_send_ps_abs,d1_coorg_recv_ps_abs,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
-call mpi_allreduce(d2_coorg_send_ps_abs,d2_coorg_recv_ps_abs,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d1_coorg_send_ps_abs,d1_coorg_recv_ps_abs,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d2_coorg_send_ps_abs,d2_coorg_recv_ps_abs,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
d1_coorg_send_ps_free_surface=4
d2_coorg_send_ps_free_surface=4*nelem_acoustic_surface
-call mpi_allreduce(d1_coorg_send_ps_free_surface,d1_coorg_recv_ps_free_surface,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
-call mpi_allreduce(d2_coorg_send_ps_free_surface,d2_coorg_recv_ps_free_surface,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d1_coorg_send_ps_free_surface,d1_coorg_recv_ps_free_surface,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d2_coorg_send_ps_free_surface,d2_coorg_recv_ps_free_surface,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
d1_coorg_send_ps_vector_field=8
if(interpol) then
@@ -3809,8 +3818,8 @@
else
d2_coorg_send_ps_vector_field=npoin
endif
-call mpi_allreduce(d1_coorg_send_ps_vector_field,d1_coorg_recv_ps_vector_field,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
-call mpi_allreduce(d2_coorg_send_ps_vector_field,d2_coorg_recv_ps_vector_field,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d1_coorg_send_ps_vector_field,d1_coorg_recv_ps_vector_field,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
+ call mpi_allreduce(d2_coorg_send_ps_vector_field,d2_coorg_recv_ps_vector_field,1,MPI_INTEGER,MPI_MAX,MPI_COMM_WORLD,ier)
#else
@@ -4119,22 +4128,21 @@
! *********************************************************
if(coupled_acoustic_elastic) then
-
-! loop on all the coupling edges
+ ! loop on all the coupling edges
do inum = 1,num_fluid_solid_edges
-! get the edge of the acoustic element
+ ! get the edge of the acoustic element
ispec_acoustic = fluid_solid_acoustic_ispec(inum)
iedge_acoustic = fluid_solid_acoustic_iedge(inum)
-! get the corresponding edge of the elastic element
+ ! get the corresponding edge of the elastic element
ispec_elastic = fluid_solid_elastic_ispec(inum)
iedge_elastic = fluid_solid_elastic_iedge(inum)
-! implement 1D coupling along the edge
+ ! implement 1D coupling along the edge
do ipoin1D = 1,NGLLX
-! get point values for the elastic side, which matches our side in the inverse direction
+ ! get point values for the elastic side, which matches our side in the inverse direction
i = ivalue_inverse(ipoin1D,iedge_elastic)
j = jvalue_inverse(ipoin1D,iedge_elastic)
iglob = ibool(i,j,ispec_elastic)
@@ -4147,16 +4155,16 @@
b_displ_z = b_displ_elastic(3,iglob)
endif
-! get point values for the acoustic side
+ ! get point values for the acoustic side
i = ivalue(ipoin1D,iedge_acoustic)
j = jvalue(ipoin1D,iedge_acoustic)
iglob = ibool(i,j,ispec_acoustic)
-! compute the 1D Jacobian and the normal to the edge: for their expression see for instance
-! O. C. Zienkiewicz and R. L. Taylor, The Finite Element Method for Solid and Structural Mechanics,
-! Sixth Edition, electronic version, www.amazon.com, p. 204 and Figure 7.7(a),
-! or Y. K. Cheung, S. H. Lo and A. Y. T. Leung, Finite Element Implementation,
-! Blackwell Science, page 110, equation (4.60).
+ ! compute the 1D Jacobian and the normal to the edge: for their expression see for instance
+ ! O. C. Zienkiewicz and R. L. Taylor, The Finite Element Method for Solid and Structural Mechanics,
+ ! Sixth Edition, electronic version, www.amazon.com, p. 204 and Figure 7.7(a),
+ ! or Y. K. Cheung, S. H. Lo and A. Y. T. Leung, Finite Element Implementation,
+ ! Blackwell Science, page 110, equation (4.60).
if(iedge_acoustic == ITOP)then
xxi = + gammaz(i,j,ispec_acoustic) * jacobian(i,j,ispec_acoustic)
zxi = - gammax(i,j,ispec_acoustic) * jacobian(i,j,ispec_acoustic)
@@ -4187,13 +4195,13 @@
weight = jacobian1D * wzgll(j)
endif
-! compute dot product
+ ! compute dot product
displ_n = displ_x*nx + displ_z*nz
potential_dot_dot_acoustic(iglob) = potential_dot_dot_acoustic(iglob) + weight*displ_n
if(SIMULATION_TYPE == 2) then
- b_potential_dot_dot_acoustic(iglob) = b_potential_dot_dot_acoustic(iglob) +&
+ b_potential_dot_dot_acoustic(iglob) = b_potential_dot_dot_acoustic(iglob) + &
weight*(b_displ_x*nx + b_displ_z*nz)
endif !if(SIMULATION_TYPE == 2) then
@@ -6824,45 +6832,45 @@
close(IOUT_ENERGY)
endif
- if (.not. any_poroelastic) then
-open(unit=1001,file='DATA/model_velocity.dat_output',status='unknown')
- if ( .NOT. assign_external_model) then
-allocate(rho_local(ngllx,ngllz,nspec)); rho_local=0.
-allocate(vp_local(ngllx,ngllz,nspec)); vp_local=0.
-allocate(vs_local(ngllx,ngllz,nspec)); vs_local=0.
+ if (.not. any_poroelastic) then
+ open(unit=1001,file='DATA/model_velocity.dat_output',status='unknown')
+ if ( .NOT. assign_external_model) then
+ allocate(rho_local(ngllx,ngllz,nspec)); rho_local=0.
+ allocate(vp_local(ngllx,ngllz,nspec)); vp_local=0.
+ allocate(vs_local(ngllx,ngllz,nspec)); vs_local=0.
!! write(1001,*) npoin
!! do iglob = 1,npoin
!! write(1001,*) coord(1,iglob),coord(2,iglob),rho_global(iglob),vp_global(iglob),vs_global(iglob)
!! end do
- do ispec = 1,nspec
- do j = 1,NGLLZ
- do i = 1,NGLLX
- iglob = ibool(i,j,ispec)
- rho_local(i,j,ispec) = density(1,kmato(ispec))
- vp_local(i,j,ispec) = sqrt(poroelastcoef(3,1,kmato(ispec))/density(1,kmato(ispec)))
- vs_local(i,j,ispec) = sqrt(poroelastcoef(2,1,kmato(ispec))/density(1,kmato(ispec)))
- write(1001,'(I10, 5F13.4)') iglob, coord(1,iglob),coord(2,iglob),&
+ do ispec = 1,nspec
+ do j = 1,NGLLZ
+ do i = 1,NGLLX
+ iglob = ibool(i,j,ispec)
+ rho_local(i,j,ispec) = density(1,kmato(ispec))
+ vp_local(i,j,ispec) = sqrt(poroelastcoef(3,1,kmato(ispec))/density(1,kmato(ispec)))
+ vs_local(i,j,ispec) = sqrt(poroelastcoef(2,1,kmato(ispec))/density(1,kmato(ispec)))
+ write(1001,'(I10, 5F13.4)') iglob, coord(1,iglob),coord(2,iglob),&
rho_local(i,j,ispec),vp_local(i,j,ispec),vs_local(i,j,ispec)
- end do
- end do
- end do
- else
+ end do
+ end do
+ end do
+ else
!! write(1001,*) npoin
!! do iglob = 1,npoin
!! write(1001,*) coord(1,iglob),coord(2,iglob),rhoext_global(iglob),vpext_global(iglob),vsext_global(iglob)
!! end do
- do ispec = 1,nspec
+ do ispec = 1,nspec
do j = 1,NGLLZ
- do i = 1,NGLLX
- iglob = ibool(i,j,ispec)
- write(1001,'(I10,5F13.4)') iglob, coord(1,iglob),coord(2,iglob),&
+ do i = 1,NGLLX
+ iglob = ibool(i,j,ispec)
+ write(1001,'(I10,5F13.4)') iglob, coord(1,iglob),coord(2,iglob),&
rhoext(i,j,ispec),vpext(i,j,ispec),vsext(i,j,ispec)
+ end do
end do
- end do
- end do
- endif
-close(1001)
- endif
+ end do
+ endif
+ close(1001)
+ endif
! print exit banner
if (myrank == 0) call datim(simulation_title)
More information about the CIG-COMMITS
mailing list