YoungsCoppersmithMFD

69 views
Skip to first unread message

Theodora Volti

unread,
Jul 7, 2016, 1:14:19 AM7/7/16
to OpenQuake Users

Hi,

>

> In the Hazard Module I am trying to run <YoungsCoppersmithMFD

> minmag="5.0" bValue="1.0" binWidth="0.1"

> characteristicMag="7.0" totalMomentRate="1.05E19"/>

>

> The message I receive is:

> ---------------------------------

> File

> "/usr/lib/python2.7/site-packages/openquake/commonlib/logictree.py",

> line 412, in _apply_uncertainty_to_mfd mfd.modify('increment_max_mag',

> dict(value=value)) File

> "/usr/lib64/python2.7/site-packages/openquake/hazardlib/mfd/base.py",

> line 54, in modify (modification, type(self).__name__))

> ValueError: Modification increment_max_mag is not supported by

> YoungsCoppersmith1985MFD

> ----------------------------------

> if instead I use the <truncGutenbergRichterMFD aValue="5.0" bValue="1.0" minMag="5.0"

maxMag="6.0"/> the program runs.


I use the 2.0 version which should support the above MFD. Any idea why it does not work?

>

> thank you very much

>

> Theodora

Graeme Weatherill

unread,
Jul 7, 2016, 4:55:43 AM7/7/16
to openqua...@googlegroups.com
Dear Theodora,

So, I understand you are trying to apply the relative modification of Mmax in the source model logic tree to the Youngs & Coppersmith MFD model. Unfortunately, the combinations of adjustments and the respective MFDs are still hard coded in OpenQuake (something we are working to change) we haven't yet made this functionality available for the Youngs & Coppersmith MFD.  We will try to do so in the near future.

In the short term the alternative I can suggest is to use the oq-hazardlib to get the actual magnitude rates for each branch and use the incrementalMFDabsolute uncertainty on the logic tree to simply provide the different versions of the MFD for the source in question.

So, let me illustrate. You have a YC mfd with Mmin = 5.0, bvalue = 1.0, binWidth= 0.1, totalMomentRate =1.05E19. Assuming, in the current example, that the total moment rate is fixed, we can consider three different values of Mmax: 6.8 (weight=0.2), 7.0 (weight=0.6), 7.2 (weight=0.2). We can use the oq-hazardlib (with a little bit of Python) to get the actual incremental MFDs for the three branches. To do so, open an IPython terminal (simply type 'ipython' from the command line in operating system where OpenQuake is installed). In the IPython session, do the following:

>> from openquake.hazardlib.mfd import YoungsCoppersmith1985MFD
>> mfd1 = YoungsCoppersmith1985MFD.from_total_moment_rate(min_mag=5.0, b_val=1.0, char_mag=6.8, total_moment_rate=1.05E19, bin_width=0.1)
>> mags1, rates1 = zip(*mfd1.get_annual_occurrence_rates())
# Show the rates
>> rates1
 (list of incremental rates printed here)
>> mags1[0]
(centre point of lowest magnitude bin printed here) 5.05


Repeat the above for the two MFDs:
>> mfd2 = YoungsCoppersmith1985MFD.from_total_moment_rate(min_mag=5.0, b_val=1.0, char_mag=7.0, total_moment_rate=1.05E19, bin_width=0.1)
>> mfd3 = YoungsCoppersmith1985MFD.from_total_moment_rate(min_mag=5.0, b_val=1.0, char_mag=7.2, total_moment_rate=1.05E19, bin_width=0.1)


So you will have three vectors (e.g. rates1, rates2 and rates3). There can now be input into the logic tree as alternative evenly discretised MFDs for a particular source. Initially you will need to put one of these as the MFD for the source (it doesn't actually matter which, but lets choose the "middle" branch: rates2) e.g.:

<simpleFaultSource id=SOURCE_ID, name="...", tectonicRegion="...">
     ...
     <incrementalMFD binWidth="0.1" minMag="5.05">
        <occurRates>(The rates from rates2)</occurRates>
    </incrementalMFD>
    ...
</simpleFaultSource>

Then in the corresponding source model logic tree you would need to specify the alternative MFDs, like this:

        <logicTreeBranchingLevel branchingLevelID="bl4">
            <logicTreeBranchSet uncertaintyType="incrementalMFDAbsolute"
                                branchSetID="bs4"
                                applyToSources="SOURCE_ID">
                <logicTreeBranch branchID="b9">
                    <uncertaintyModel>
                        <incrementalMFD
                            binWidth="0.1"
                            minMag="5.05"
                        >
                            <occurRates>
                                (The space-delimited rates from "rates1")
                            </occurRates>
                        </incrementalMFD>
                    </uncertaintyModel>
                    <uncertaintyWeight>0.2</uncertaintyWeight>
                </logicTreeBranch>

                <logicTreeBranch branchID="b10">
                    <uncertaintyModel>
                        <incrementalMFD
                            binWidth="0.1"
                            minMag="5.05"
                        >
                            <occurRates>
                                (The space-delimited rates from "rates2")
                            </occurRates>
                        </incrementalMFD>
                    </uncertaintyModel>
                    <uncertaintyWeight>0.6</uncertaintyWeight>
                </logicTreeBranch>

                <logicTreeBranch branchID="b11">
                    <uncertaintyModel>
                        <incrementalMFD
                            binWidth="0.1"
                            minMag="5.05"
                        >
                            <occurRates>
                                (The space-delimited rates from "rates3")
                            </occurRates>
                        </incrementalMFD>
                    </uncertaintyModel>
                    <uncertaintyWeight>0.2</uncertaintyWeight>
                </logicTreeBranch>
            </logicTreeBranchSet>
        </logicTreeBranchingLevel>

The logic tree example to copy can be seen here.

From this it should be possible to execute the logic tree as intended. I hope you can also see that the same approach works if you want to modify b-value or total moment rate instead.

I'm sorry this is a rather inelegant approach for the time being. We will try to expose the proper logic tree functionality as soon as we can.

Let me know if you have any questions.

Thanks,

Graeme
--
You received this message because you are subscribed to the Google Groups "OpenQuake Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to openquake-use...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


Theodora Volti

unread,
Jul 8, 2016, 1:43:58 AM7/8/16
to OpenQuake Users
Hi Graeme, 

Thank you very much for your answer and suggestions. Unfortunately, having done all that, I tried to run the model again and received 
------------------
ValueError: Modification set_mfd is not supported by TruncatedGRMFD
---------------------

Does it say anything to you or do you need to see the files I run?

cheers, Theodora

Theodora Volti

unread,
Jul 11, 2016, 8:50:57 PM7/11/16
to OpenQuake Users
Hi Graeme,

The units for Total_Moment_Rate must be dyne. With Newton the rates become too high. Could you please verify that for me? Thanks. Theodora


On Thursday, July 7, 2016 at 3:14:19 PM UTC+10, Theodora Volti wrote:

Graeme Weatherill

unread,
Jul 12, 2016, 3:13:11 AM7/12/16
to openqua...@googlegroups.com
Dear Theodora,

The units for total moment rate are in Newton metres per year.

Thanks,

Graeme
--
Reply all
Reply to author
Forward
0 new messages